一个关于shell if语句的问题 急求帮忙
我想比较用shell的if语句比较:如果 s1不是以html或者txt结尾的字符串 那么就替换s1 分别试过 if [ ! "*.html" -o ! "*.txt" ]
if [ $s1!="*.html" -o $s1!="*.txt" ] 都出错 ? 请问 用 if [] 能实现吗
[解决办法]
举了三个例子,直接替换,你看看。有很多情况要判断的话是不是考虑用sed,网上很多sed的例子。
我是参考了这篇文章:http://www.cnblogs.com/chengmo/archive/2010/10/02/1841355.html
文章写着支持正则表达式,我没有试出来。
[root@RHEL6A scripts]# more s4.sh s1='/homt/html/txt/abcd/asdf.html'echo $s1s1=${s1/%txt/EEE}s1=${s1/%html/EEE}echo $s1s1='/homt/html/txt/abcd/asdf.txt'echo $s1s1=${s1/%txt/EEE}s1=${s1/%html/EEE}echo $s1s1='/homt/html/txt/abcd/asdf.abc'echo $s1s1=${s1/%txt/EEE}s1=${s1/%html/EEE}echo $s1[root@RHEL6A scripts]# ./s4.sh /homt/html/txt/abcd/asdf.html/homt/html/txt/abcd/asdf.EEE/homt/html/txt/abcd/asdf.txt/homt/html/txt/abcd/asdf.EEE/homt/html/txt/abcd/asdf.abc/homt/html/txt/abcd/asdf.abc[root@RHEL6A scripts]#
[解决办法]
#!/bin/bashecho $1 | awk '/.*\.html/{print}';
[解决办法]
s2=${s1##*.}[[ $s2 != "txt" && $s2 != "html" ]] && s1=string
[解决办法]
改下,加个结尾符"$":
echo $1 | awk '/.*\.(html|txt)$/{print}';