# 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!这行文本。