我有一個字符串,其中包含一個我想在bash腳本中執行的命令。我怎樣才能做到這一點? 對不起,如此基本的問題,但我是新的bash。 這是我的代碼:在bash中的字符串中執行命令
echo "What is the path to save the result files?"
read out_path
end_cm1=$"fastqc -o "$out_path$" --noextract -fastq "$files1
我想執行是在end_cm1變量的指令。
我有一個字符串,其中包含一個我想在bash腳本中執行的命令。我怎樣才能做到這一點? 對不起,如此基本的問題,但我是新的bash。 這是我的代碼:在bash中的字符串中執行命令
echo "What is the path to save the result files?"
read out_path
end_cm1=$"fastqc -o "$out_path$" --noextract -fastq "$files1
我想執行是在end_cm1變量的指令。
首先,你不必把該命令字符串中的所有:你可以這樣做:
fastqc -o "$out_path" --noextract -fastq $files1
(而且我建議把$out_path
引號這裏萬一路徑具有我沒有把$files1
放在引號中,因爲你的變量是複數,所以我認爲這裏有多個;你應該小心這些文件名中的空格)
其次,你問的問題的答案是eval
:
eval $end_cm1
你只需要在你的字符串有輕微的語法問題:
end_cm1="fastqc -o $out_path --noextract -fastq $files1"
$enc_cm1
話雖如此,@ams是正確的大約不需要這個 分配給擺在首位的字符串,以及關於所涉及的風險 中未引用$files1
。
具體而言,如果您在'$ end_cm1'內有額外的引用級別或未展開的變量,那麼您*需要*'eval'。如果你沒有引用和沒有變量,那麼'eval'將和沒有引用一樣。我更喜歡使用它,所以我知道我在做什麼。人們應該意識到,用戶輸入可能會有被評估的東西(使用任一選項),所以不要在可能被利用來破解您的系統的腳本中執行此操作! – ams
你爲什麼想這樣做?請參閱[BashFAQ/050](http://mywiki.wooledge.org/BashFAQ/050)。 –