【问题标题】:How to set a Directory as an Argument in Bash如何在 Bash 中将目录设置为参数
【发布时间】:2015-05-15 03:37:02
【问题描述】:

我无法找出如何在 bash 中将目录设置为参数。

我试图作为参数的目录是/home/rrodriguez/Documents/one.

在我尝试寻找答案的任何地方,我都会看到诸如 dir = $1 之类的示例,但我似乎无法找到关于这意味着什么或如何设置它以使其引用我的特定文件位置的解释。谁能告诉我如何为我的路径目录设置变量?

添加我的代码以便更好地了解我想要做什么:

#!bin/bash

$1 == 'home/rrodriguez/Documents/one/'

dir = $1

touch -c $dir/*
ls -la $dir
wc$dir/* 

【问题讨论】:

  • 作为 bash 中的参数 是什么意思?你的意思是你正在编写一个bash shell 脚本并且你希望它作为一个参数?如果它是一个脚本,那么当您调用脚本时,默认情况下,$1、$2 等是传递给脚本的参数(如果它们存在)。只需谷歌“bash 脚本命令行参数”或类似的东西,你就会发现很多关于它的信息。
  • 啊,谢谢,这有助于稍微理解 $1 的含义。那么这是否意味着我必须将其设置为 $1 == "path/to/directory/" ?
  • 顺便说一句:“我看到像dir = $1这样的例子”不,你没有。没有工作 bash 示例在等号周围有空格。

标签: bash variables ubuntu directory


【解决方案1】:

考虑:

#!bin/bash

dir=$1
touch -c "$dir"/*
ls -la "$dir"

这个脚本接受一个参数,一个目录名,并触及该目录中的文件,然后显示一个目录列表。您可以通过以下方式运行它:

bash script.sh 'home/rrodriguez/Documents/one/'

由于home/rrodriguez/Documents/one/是脚本的第一个参数,所以在脚本中分配给$1。

注意事项

在 shell 中,永远不要在赋值中的 = 的任一侧放置空格。

我省略了 wc$dir/* 行,因为我不清楚它的目的是什么。

我在$dir 周围加上了双引号,以防止shell 执行分词等。如果dir 包含空格,这将很重要。

【讨论】:

  • 哦,非常感谢,$1 只是在运行脚本时寻找外面的第一个参数!太感谢了! wc $dir/* 仅用于我程序中的字数统计
  • 是的,"$2" 是第二个参数,"$@" 是所有参数。
  • 小心地说“$@”是所有的论据,还有比这更多的一点;虽然我希望至少已经彻底阅读了非常好的 bash 手册页,它清楚地解释了所有这些,以及 $1、$2、$@、$*、...?
猜你喜欢
  • 2011-03-21
  • 2019-05-05
  • 2015-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-29
  • 1970-01-01
相关资源
最近更新 更多