[英]Assign value to variable after cut?
作為Unix newbee,我希望解析文件的完整路徑
/Users/E/atsp_0001.tar.gz
入0001
和分配0001
到可變sub_id
。
解析雖然很笨拙,但它的工作方式如下:
E$ file=/Users/E/atsp_0001.tar.gz
E$ echo ${file##*/} | cut -d "_" -f2 | cut -d "." -f1
0001
然后,我無法將0001
分配給這樣的變量:
E$ file=/Users/E/atsp_0001.tar.gz
E$ sub_id=${file##*/} | cut -d "_" -f2 | cut -d "." -f1
E$ echo ${sub_id}
E$
如果有人可以(1)解釋為什么它不起作用以及如何解決它,以及(2)改進笨拙的解析,我將不勝感激。
這是我們的做法。 您可以使用$()
。 您也可以使用``代替$()
但我不建議這樣做。
:~> file=/Users/E/atsp_0001.tar.gz
:~> echo ${file##*/} | cut -d "_" -f2 | cut -d "." -f1
0001
:~> variabletest=$(echo ${file##*/} | cut -d "_" -f2 | cut -d "." -f1)
:~> echo $variabletest
0001
您正在變量分配中執行多項操作,而不是存儲值,這就是為什么它對您不起作用的原因
echo
將打印數據,但是您正在執行管道操作,因此只有將其圍起來以將其標記為單個操作后才能起作用。 您的解析是確定的,因為它取決於您的文件命名約定。 但是我會使用基本名稱命令
:~> echo $file
/Users/E/atsp_0001.tar.gz
:~> basename $file
atsp_0001.tar.gz
這將清除路徑。
因此,您可以執行variabletest=$(echo basename $file | cut -d "_" -f2 | cut -d "." -f1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.