GNU/Linux >> Znalost Linux >  >> Ubuntu

Přiřadit pouze část řetězce k proměnné v Bash?

Dostávám od uživatele určitou absolutní cestu k souboru a chci vytvořit proměnnou, která bude řetězcem, který nebude obsahovat pouze PRVNÍ dvě součásti cesty k souboru, ale bez jejího vytištění nebo čehokoli.

Absolutní cesta může být například:

/home/myusername/folder1/folder2/folder3

A je uloženo v „target_path“ a chci, aby „mydir“ bylo pouze:

/folder1/folder2/folder3

Zkoušel jsem použít příkaz vyjmout různými způsoby, ale bez úspěchu.

Přijatá odpověď:

Použití manipulace s bashovým řetězcem:

$ a=/home/myusername/folder1/folder2/folder3
$ echo "${a#/*/*/}"
folder1/folder2/folder3

Takže požadovaný řetězec by byl (přidáním úvodního lomítka):

b="/${a#/*/*/}"

Pro proměnnou a , ${a#foo} odstraní nejkratší řetězec odpovídající foo od začátku z a . Odstraníme tedy nejkratší řetězec obsahující tři / (včetně úvodního lomítka v cestě), chcete-li odstranit první dvě součásti absolutní cesty.


Ubuntu
  1. Bash skriptování (I)

  2. Bash Dynamické (proměnné) názvy proměnných?

  3. Použití odkazu na proměnnou bashového řetězce v Sed?

  1. Úplný pohled na to, kde je v Bash nastavena proměnná cesty?

  2. Převeďte textový řetězec v bash na pole

  3. Co dělá 'bash -c'?

  1. Jak povolit pouze určité znaky v proměnné Bash?

  2. Jak se dostat do obsahu řetězcové proměnné?

  3. Jak rozdělit řetězec ve skriptu Bash