2015-05-20 44 views
0

我知道我可以使用sls來從鹽運行命令,但我有要求通過bash腳本運行某些命令。我需要將命令的結果存儲到變量中。LINUX - 變量中的saltstack cmd.run

當運行在它工作的鹽服務器的外殼下面,我得到的結果

salt -t70 'server' cmd.run "cat /etc/shadow | grep user |cut -d: -f3" 

但是,當我的命令遷移到一個變量中的鹽服務器一個bash文件裏面沒有。

BASH.SH

test = $(echo salt -t70 $server cmd.run "cat /etc/shadow | grep $user |cut -d\":\" -f3"); 
echo $test; 

錯誤信息

[[email protected] ~]# sh bash.sh 
bash.sh: line 13: test: too many arguments 

我缺少什麼?我需要解決什麼才能使其工作? 謝謝

+0

您能不能告訴你的bash腳本的全部內容? 13號線是什麼? – mattias

+0

@mattias,不需要額外的上下文;這裏有足夠的診斷這個問題。 –

+1

順便說一句 - http://shellcheck.net/會自動爲你找到這個錯誤。 –

回答

1

你不能在你的=周圍的空間中的任務 - 這樣做使操作......好吧,不再是一項任務。這就是說:

使用

# assign result to a variable named test 
test=$(echo salt -t70 $server cmd.run "cat /etc/shadow | grep $user |cut -d\":\" -f3"); 

# run the command named test, with its first argument '=' and its second argument 
# taken from the results of invoking saltstack. 
test = $(echo salt -t70 $server cmd.run "cat /etc/shadow | grep $user |cut -d\":\" -f3"); 
+0

我實際上已經刪除了echo,並保留爲test = $(salt -t70 $ server cmd.run「cat/etc/shadow | grep $ user | cut -d \」:\「-f3」);但它在做這件事時很有用。謝謝 – JustQn4

+0

是的 - 我認爲你故意在那裏有'echo'來測試變量捕獲,而不用實際運行鹽。 –