+ -
当前位置:首页 → 问答吧 → 請教這個腳本是否可用

請教這個腳本是否可用

时间:2011-06-21

来源:互联网

if [ -n tcp ]                         #判斷文件是否為空
then
echo "沒有跨引擎建立synonym"
else
sed -e 's/"[^.]*.//g' -e 's/;//g' tcp |sed -e 's/create synonym/dbschema -d /g' -e 's/for//g' -e 's/:/ -t /g' |awk '{print $1,$2,$4,$5,$6=$6" -ss >>tab.sql"}' >2.sh
fi

我就想達到一個目的
就是臺果tcp文件為空我就輸出沒有跨引擎建立synonym
要是不為空我就執行sed -e 's/"[^.]*.//g' -e 's/;//g' tcp |sed -e 's/create synonym/dbschema -d /g' -e 's/for//g' -e 's/:/ -t /g' |awk '{print $1,$2,$4,$5,$6=$6" -ss >>tab.sql"}' >2.sh

不知我是否有描述清楚問題

作者: mir620   发布时间: 2011-06-21

回复 mir620


    兄弟,你判断文件是否为空就错了。-n 是对string不是file,可以用-s,具体man test:
if [ ! -s "datafile" ];then echo 空;else echo 非空; fi 空

作者: lionfun   发布时间: 2011-06-21

本帖最后由 mir620 于 2011-06-21 12:47 编辑

回复 lionfun


    我是說我為什麽用-n,不可以,

if [ ! -s tcp ]                         #判斷文件是否為空
then
echo "沒有跨引擎建立synonym"
else
sed -e 's/"[^.]*.//g' -e 's/;//g' tcp |sed -e 's/create synonym/dbschema -d /g' -e 's/for//g' -e 's/:/ -t /g' |awk '{print $1,$2,$4,$5,$6=$6" -ss >>tab.sql"}' >2.sh
fi


是這樣嗎

作者: mir620   发布时间: 2011-06-21

回复 lionfun


    哪怎麼樣判斷當前目錄下是否存在syn.sql這個文件,要是沒有就建立
我用的是
ls syn.sql || touch syn.sql

作者: mir620   发布时间: 2011-06-21

回复 mir620


    你执行看看,行了对了。

作者: lionfun   发布时间: 2011-06-21

回复 mir620


    如果要用这样:ls syn.sql || touch syn.sql 最好改成ls syn.sql 2>/dev/null || touch syn.sql
    也可以用[ -e "syn.sql" ] || touch syn.sql

作者: lionfun   发布时间: 2011-06-21

回复 lionfun


    f [ ! -s tcp ]   
好像不可以加!,報錯,我去了就好了

作者: mir620   发布时间: 2011-06-21