基本的BASH变量调用在脚本中失败

时间:2014-11-01 19:39:06

标签: bash variables syntax-error cd

为什么我的脚本中的这个基本变量调用失败了?

脚本就在下面,执行后在终端输出的错误在脚本下面。

第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 -)'

2 个答案:

答案 0 :(得分:1)

试试这个:

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

答案 1 :(得分:0)

您需要使用-s选项将任意shell命令(如显示的管道)传递给具有sudo的shell:

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