帮助运行.sh脚本

时间:2011-07-26 20:40:12

标签: unix shellexecute

我的.sh脚本为

#!/bin/bash

if [ -z "$1" ] || [ -z "$2" ]; then
    echo "Usage: sync.sh DIRECTORY_LOCATION"
    exit 1
fi

DIRECTORY_LOCATION=$1

DEV_INSTANCE_IP=<some ip>

# Update data
scp -pR ${DEV_INSTANCE_IP}:${DIRECTORY_LOCATION}/* ${DIRECTORY_LOCATION}/

如何运行此脚本??

我尝试了sh sync.sh <path to directory>,但它回显了Usage: sync.sh DIRECTORY_LOCATION行。这是否意味着它正在运行?

3 个答案:

答案 0 :(得分:2)

咳咳,脚本需要在条件|| [ -z "$2" ]中使用第二个(伪造=从未使用过)参数,如果删除该部分,它应该起作用,因为作者意味着要使用它,无论这可能是什么;-) 至少它应该按你所说的方式工作,即sh sync.sh <path to directory>. 不,如果您只在您的版本中提供了这一个参数,它会预先显示使用情况并退出。 你也可以只提供第二个参数(只要你不与两者混淆,即提供目录,因为第二个arg无济于事......

答案 1 :(得分:2)

是的,它正在运行,-z标志意味着

-z STRING      True if string is empty.

如果第一个参数或第二个参数为空 - &gt;退出。

获取更多信息的一种方法是将shebang更改为#!/bin/bash -x这将告诉bash打印执行的每一行,包括参数的值。

答案 2 :(得分:1)

此脚本中的$ 1表示它期待DIRECTORY_LOCATION的另一个条目。所以,你需要:

bash sync.sh directoryname

此外,不要使用sh scriptname.sh ,最好做“chmod + x scriptname.sh”。

希望这有帮助!