shell脚本中如何限制输入的字符串中不能是某个特定的字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本中如何限制输入的字符串中不能是某个特定的字符相关的知识,希望对你有一定的参考价值。

shell脚本中如何限制输入的字符串中不能是某个特定的字符,如限制输入的字符串中不能有$符号

参考技术A string1=""
while read -n1 char ; do # 每一次只读入一个字符
[[ $char =~ '\$' ]] && continue # 如果字符是$则重新读入
[[ $char =~ "\n" ]] && break # 如果输入的字符是\n则不再读入
string1="$string1$char" # 将新输入的字符添加到字符串的末尾
echo "string is $string1" # 测试用的,可以将这行注释掉
done

缺点是需要手动输入\n来结束输入
参考技术B 判断,
if [ $a = $ ]
then
echo "不能输入$符号"
fi

[shell]实现脚本执行结果匹配某个字符串

今天接到一个这个要求,就是脚本执行结果中包含某个字符串,要求查出来。

我给的思路是 按照脚本名和结果 以 追加 的方式写入文本,然后从这个文本中查找相应的内容。

对方给的思路是以执行结果来判断,就自己实现了这种方式

首先是按照目录写入脚本,这里是在脚本中写入了echo $i的内容。也就是脚本有执行结果。

#!/bin/bash
SH_DIR=sh_dir
cd $SH_DIR
for i in $(seq 50);
do
        echo "echo $i">$i.sh
done

然后是循环执行并查找的脚本,这里是全部遍历了一遍,可以自己做成仅发现第一个就终止。

 1 #!/bin/bash
 2 SH_DIR=sh_dir
 3 for runsh in `ls $SH_DIR | grep .sh`;
 4 do
 5         echo $runsh
 6         result=`./$SH_DIR/$runsh`
 7         echo $result
 8         echo $result | grep 8
 9 
10         if [ $? -ne 0 ];
11         then 
12                 echo ""
13         else
14                 echo "find it in $runsh "
15         fi
16 done

其中第5行和第7行都可以注释,就显示的更清楚了。

 

我觉得用python实现可能更快一点。估计我学习python的时间更长。

伪代码跟这个类似,先for循环遍历可执行文件,然后存储结果,用if做一个对比。

 

以上是关于shell脚本中如何限制输入的字符串中不能是某个特定的字符的主要内容,如果未能解决你的问题,请参考以下文章

检查命令的输出是不是包含 shell 脚本中的某个字符串

shell脚本中单双引号疑惑

Linux阶段总结shell脚本

Shell脚本编程之Shell字符串

linux shell 如何比较两个整数的大小

[shell]实现脚本执行结果匹配某个字符串