# cat a.sh #!/bin/bash dir = /home/ file = a.txt ps -ef > ${dir}/${file} 执行报错# /bin/bash a.sh dir: cannot access =: No such file or directory /home/: magx songpy test =: cannot open (No such file or directory) a.txt: cannot open (No such file or directory)
问题在于你在定义变量时使用了空格,导致变量名被解析成了dir
和file
,并非dir
和file
。在Shell中,变量名不能包含空格。
正确的写法如下:
- #!/bin/bash
-
- dir=/home
- file=a.txt
-
- ps -ef > "${dir}/${file}"
请注意:
生成的文件名称带日期(精确到秒)
可以使用date
命令获取当前日期,并结合重定向符号>
将命令输出的内容重定向到一个以日期命名的文件中。示例代码如下:
- #!/bin/bash
-
- # 获取当前日期
- now=$(date +"%Y-%m-%d")
-
- # 重定向输出到文件中
- echo "Hello World!" > "$now.txt"
执行脚本后,会在当前目录下生成以当前日期命名的文件,例如2021-10-28.txt
,其中包含了Hello World!
这行文本。如果需要在文件名中加上时间戳,可以使用+%H%M%S
来获取当前时间的小时、分钟、秒数。完整代码如下:
- #!/bin/bash
-
- # 获取当前日期和时间
- now=$(date +"%Y-%m-%d_%H%M%S")
-
- # 重定向输出到文件中
- echo "Hello World!" > "$now.txt"
执行脚本后,会在当前目录下生成以当前日期和时间命名的文件,例如2021-10-28_163410.txt
,其中包含了Hello World!
这行文本。
可以使用date
命令获取当前日期,并结合重定向符号>
将命令输出的内容重定向到一个以日期命名的文件中。示例代码如下:
- #!/bin/bash
-
- # 获取当前日期
- now=$(date +"%Y-%m-%d")
-
- # 重定向输出到文件中
- echo "Hello World!" > "$now.txt"
执行脚本后,会在当前目录下生成以当前日期命名的文件,例如2021-10-28.txt
,其中包含了Hello World!
这行文本。如果需要在文件名中加上时间戳,可以使用+%H%M%S
来获取当前时间的小时、分钟、秒数。完整代码如下:
- #!/bin/bash
-
- # 获取当前日期和时间
- now=$(date +"%Y-%m-%d_%H%M%S")
-
- # 重定向输出到文件中
- echo "Hello World!" > "$now.txt"
执行脚本后,会在当前目录下生成以当前日期和时间命名的文件,例如2021-10-28_163410.txt
,其中包含了Hello World!
这行文本。