大佬教程收集整理的这篇文章主要介绍了如何将通配符parameter passing给bash文件,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图编写一个bash脚本,允许用户使用通配符传递目录path。
例如,
bash show_files.sh *
在这个目录下执行
drw-r--r-- 2 root root 4.0K Sep 18 11:33 dir_a -rw-r--r-- 1 root root 223 Sep 18 11:33 file_b.txt -rw-rw-r-- 1 root root 106 Oct 18 15:48 file_c.sql
会输出:
python脚本如何知道自己在Nohup模式下运行?
将参数从batch file传递到MysqL脚本
主要在c中传递参数
将parameter passing给PowerSHell脚本
dir_a file_b.txt file_c.sql
它现在的方式是输出:
dir_a
#!/bin/bash dirs="$1" for dir in $dirs do echo $dir done
如何通过感叹号在Linux上的参数?
参数在pthread中被错误地传递了
如何检查一个参数是否包含某些单词
用于parsing参数GNU风格的库?
在sHell脚本中使用for循环遍历参数列表?
父sHell,一个调用bash show_files.sh * ,为你扩展* 。
在你的脚本中,你需要使用:
for dir in "$@" do echo "$dir" done
双引号确保文件名中的多个空格等被正确处理。
另请参见如何遍历bash sHell脚本中的参数 。
如果你真的确定你想让脚本扩展* ,你必须确保*被传递给脚本(用引号括起来,就像在其他答案中一样),然后确保它在在处理中的正确点(这不是微不足道的)。 在这一点上,我会使用一个数组。
names=( $@ ) for file in "${names[@]}" do echo "$file" done
我不经常使用$@没有双引号,但这是一次或多或少是正确的事情。 棘手的部分是,它不会很好地处理空格的通配符。
考虑:
$ > "double space.c" $ > "double space.h" $ echo double space.? double space.c double space.h $
这工作正常。 但是试着把它作为一个通配符传递给脚本,好吧,我们只是说在这一点上会变得棘手。
如果你想单独提取$2 ,那么你可以使用:
names=( $1 ) for file in "${names[@]}" do echo "$file" done # ... use $2 ...
引用通配符:
bash show_files.sh '*'
for dir in "$@" do echo "$dir" done
为了保持其自身包含空白的元素的特殊能力,最好直接在"$@'上迭代而不是分配给另一个变量。
以上是大佬教程为你收集整理的如何将通配符parameter passing给bash文件全部内容,希望文章能够帮你解决如何将通配符parameter passing给bash文件所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。