如何在Bash中将目录设置为参数

9

我在寻找如何在bash中将目录设置为参数方面遇到了困难。

我希望作为参数的目录是/home/rrodriguez/Documents/one

无论我尝试在哪里寻找答案,我都看到像dir = $1这样的例子,但我似乎找不到解释它们的含义或如何设置它们以引用我的特定文件位置。 有人可以向我展示如何设置我的路径目录变量吗?

添加我的代码以更好地理解我所要做的事情:

#!bin/bash

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

dir = $1

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

2
你所说的“作为bash参数”,是指你正在编写一个bash shell脚本,并希望将其作为参数传递进去吗?如果它是一个脚本,那么当你调用你的脚本时,默认情况下,$1$2等是传递给脚本的参数(如果存在)。只需在Google上搜索“bash脚本命令行参数”或类似的内容,你就能找到大量相关信息。 - lurker
啊,谢谢,它帮助我稍微理解了一下$1的含义。那么这是否意味着我必须将其设置为$1 == "path/to/directory/"? - Robert
1
顺便说一下: “我看到像dir = $1这样的例子”——不,你没有。没有有效的bash示例在等号周围有空格。 - John1024
1个回答

6

请考虑:

#!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/* 只是用于我的程序中的单词计数。 - Robert
是的,"$2" 是第二个参数,而 "$@" 是所有参数。 - John1024
小心仅仅说"$@"就是所有参数,这个部分还有一点需要注意;虽然我希望至少已经彻底阅读了非常好的bash手册,其中清楚地解释了所有这些内容,包括$1、$2、$@、$*等。 - mrtimdog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接