我的.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
行。这是否意味着它正在运行?
答案 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”。
希望这有帮助!