Git   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何将通配符parameter passing给bash文件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我试图编写一个bash脚本,允许用户使用@L_696_2@符传递目录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模式下运行?

使用参数调用powersHell函数

将参数从batch file传递到MysqL脚本

主要在c中传递参数

将parameter passing给PowerSHell脚本

dir_a file_b.txt file_c.sql

它现在的方式是输出

dir_a

show_files.sh内容

#!/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

我不经常使用$@没有双引号,但这是一次或多或少是正确的事情。 棘手的部分是,它不会很好地处理空格的@L_696_2@符。

虑:

$ > "double space.c" $ > "double space.h" $ echo double space.? double space.c double space.h $

这工作正常。 但是试着把它作为一个@L_696_2@符传递给脚本,好吧,我们只是说在这一点上会变得棘手。

如果你想单独提取$2 ,那么你可以使用:

names=( $1 ) for file in "${names[@]}" do echo "$file" done # ... use $2 ...

引用@L_696_2@符:

bash show_files.sh '*'

或者让你的脚本接受一个参数列表,而不只是一个

for dir in "$@" do echo "$dir" done

为了保持其自身包含空白的元素的特殊能力,最好直接在"$@'上迭代而不是分配给另一个变量。

大佬总结

以上是大佬教程为你收集整理的如何将通配符parameter passing给bash文件全部内容,希望文章能够帮你解决如何将通配符parameter passing给bash文件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: