Bash
包含空格的eval上的bash錯誤
我需要使用格式觸發 bash 傳遞參數
$$ variable_name=“value” $$像這樣:
./test.sh ip='164.130.21.98' hostname='whatever' pwd='/test' ftpcmd='CWD debug' user='stefano'
在 test.sh 腳本上,我想為任何變數分配相關值:
#!/bin/bash eval `echo "$@"` echo $ftpcmd
但我得到一個
prova: command not found
錯誤。我無法理解我的
ftpcmd='CWD debug'
參數有什麼問題,也無法理解我應該如何編寫它。如果我嘗試將 eval 替換為 declare ,則
$ftpcmd
僅設置為,CWD
而不是CWD debug
我所期望的。
如果你把作業放在腳本之前
ip='164.130.21.98' hostname='whatever' pwd='/test' ftpcmd='CWD debug' user='stefano' ./test.sh
這些變數在腳本環境中可用。該
-k
選項將所有分配(不僅僅是命令前分配)視為環境修改。set -k ./test.sh ip='164.130.21.98' hostname='whatever' pwd='/test' ftpcmd='CWD debug' user='stefano' set +k
在任何一種情況下,
eval
都不需要,可以將其刪除。