[英]shell script error in unix
在目錄中使用1#做什么?
cpfile = $ {1#/ usr / newconfig} ls -l $ cpfile | 讀var1 echo var1
我正在嘗試理解腳本,但我找不到任何可以幫助我確定此命令含義的資源。
通常,可以使用#
修改變量,這會刪除前導字符串。 如果a
是一個含有foobar
內容的變量,那么${a#foo}
刪除foo
並計算為bar
。 在您的情況下,$ 1是位置參數, ${1#/usr/newconfig}
是從開頭刪除“/ usr / newconfig”的字符串的值。 如果它不匹配,則表達式求值為與$ 1相同的字符串。
但是,這個腳本有一個相當重要的問題,它在運行的ls
的環境中分配cpfile,但是ls
不接收它作為參數。 結果, ls
將在當前工作目錄上運行,而不是在作為參數傳遞給腳本的目錄上運行。 (除非先前在某個地方的腳本中分配了cpfile
。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.