2014-11-01 77 views
0

爲什麼我的腳本中的基本變量調用失敗?基本BASH變量調用失敗腳本

腳本正下方,執行後在終端輸出的錯誤在腳本下方。

第8行是第一個sudo命令。

我現在在終端中以root用戶身份執行此腳本。它工作得很好,如果我手動執行命令,一次一個,在終端內...

我將不勝感激任何洞察力。


#!/bin/bash 

echo Enter username 
read NAME 
echo Enter number 
read NUM 

sudo (cd /Users/$NAME && tar c .) | (cd /Users/$NUM && tar xf -) 

sudo chown -R $NUM:"Domain Users" /Users/$NUM 

sudo chmod g+rwx /Users/$NUM 

Stephen-Kucker:Desktop root# ./stackoverflowq.txt 
Enter username 
jsteinberg-c 
Enter number 
admin 
./stackoverflowq.txt: line 8: syntax error near unexpected token `cd' 
./stackoverflowq.txt: line 8: `sudo (cd /Users/$NAME && tar c .) | (cd /Users/$NUM && tar xf -)' 

+0

a *最小*例如,請 – 2014-11-01 19:44:22

+1

查看此鏈接以瞭解您的問題。 http://askubuntu.com/questions/425754/how-do-i-run-sudo-command-inside-a-script – 2014-11-01 19:44:51

+0

我有沒有提供過一個例子,Karoly? – 2014-11-01 19:45:19

回答

1

試試這個:

sudo tar -C /Users/$NAME -c . | sudo tar -C /Users/$NUM -xf - 
+1

你發佈的內容和我發佈的原始代碼有什麼區別?這不是修辭......我認真地問。 – 2014-11-01 19:54:01

+0

用你的語法不能用sudo執行多個命令。 – Cyrus 2014-11-01 19:58:35

+0

@DigitalImpermanence sudo只能運行一個外部可執行文件。你不能像'(subshel​​l groups)'那樣運行任意的shell複合命令,因爲它不是shell的一部分。 – 2014-11-01 20:00:30

0

您需要使用-s選項傳遞任意shell命令(如所示的管道)的外殼採用sudo

sudo -s "(cd /Users/$NAME && tar c .) | (cd /Users/$NUM && tar xf -)" 
+0

好的。我會測試你的建議。我感謝您花時間回答我的問題。我將在一分鐘後跳回來更新。 – 2014-11-01 19:52:12

+0

這是最直接的解決方案(假設它有效;我沒有測試它),但是Cyrus的答案可能更好,因爲無需更改工作目錄。 – chepner 2014-11-01 20:01:48

+0

當我運行你的建議終端返回: chown:域用戶:非法組名 ...我不明白,因爲當我從終端一次運行一個相同的命令我沒有收到此錯誤。 – 2014-11-01 20:03:53