0
我正在製作一個採用可選標準輸入的shell腳本。我有下面的代碼片段。 $ {file}只是一個寫在包含所有文件名列表的txt文件中的文件名。在這種情況下$ 2將是另一個程序(也是一個shell腳本)。Bash字符串中特殊字符'<'的問題?
if [ -f ${file}.in ]; then #if ${file}.in exists in current directory
stdIn="< ${file}.in" #set optional stdIn
fi
if ! [ -f ${file}.args ]; then #if ${file}.args does not exist in curr directory
$2 $stdIn > ${file}.out #run the $2 program with the optional standard input and redirect the output to a .out file
由於某些原因,'<'字符解釋不正確。如果我改變了行
$2 < $stdIn > ${file}.out
,並從標準輸入變量刪除「<」這工作得很好。但我不想這樣做,因爲我將不得不對其他代碼進行重大更改。任何人都知道什麼和如何解決我的當前代碼的問題?非常感謝。
請仔細閱讀http://mywiki.wooledge.org/BashFAQ/050和http://mywiki.wooledge.org/BashParser,這裏的問題是,重定向變量擴展之前發生的,所以'<'只是另一個角色,不是特別的。 –