2011-07-26 89 views
1

我我.SH脚本帮助运行一个脚本.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。这是否意味着它正在运行?

回答

2

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

-z STRING  True if string is empty. 

如果任第一个参数或第二个是空的 - >出口获得更多信息的

一个方法是将家当改变#!/bin/bash -x这将告诉bash打印的每一行执行包括价值参数

1

此脚本中的$ 1意味着它需要另一个DIRECTORY_LOCATION条目。所以,你将需要:

庆典sync.sh 目录名

而且,而是采用SH scriptname.sh,这是更好地做 “使用chmod + X scriptname.sh”。

希望这会有所帮助!

2

咳咳,脚本需要在条件|| [ -z "$2" ]第二(假=从不使用)的说法,如果你删除的那部分,它应该工作作为作家意味着它可以使用,不管这可能是;-) 至少它应该按照你所说的方式工作,即sh sync.sh <path to directory>. 而不是,如果你只在你的版本中提供了这一个参数,它预先设定了使用并退出撤消。 你也可以提供第二个参数(只要你不与两个,即提供的目录作为第二ARG无助混淆...