我正在创建一些脚本.我将省略cron,文件更改日志等.
脚本中出现问题的部分如下:
#! /bin/bash
ls>./directoryContents.txt
如果您运行此脚本,您将找到directoryContents.txt作为ls列出的文件之一.
为什么在运行ls命令之前创建了文件directoryContents.txt?
有一种简单的方法来解决这个问题吗?
使用时command > file,shell会在运行命令之前创建,截断并打开文件.
避免列出此文件的一种简单方法是在其他地方创建它,然后将其移动到目录中:
ls > /tmp/directoryContents.txt && mv /tmp/directoryContents.txt directoryContents.txt
Run Code Online (Sandbox Code Playgroud)
当然这只会工作一次.
更好的方法是在Bash中使用扩展的glob来匹配除文件之外的所有内容:
shopt -s extglob
printf '%s\n' !(directoryContents.txt) > directoryContents.txt
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33 次 |
| 最近记录: |