相关疑难解决方法(0)

shell脚本,用于删除已存在的文件

我正在研究一些我将数据存储在文件中的东西.但每次我运行脚本时,它都会附加到上一个文件中.

我想要有关如何删除文件的帮助,如果它已经存在.

shell

154
推荐指数
7
解决办法
21万
查看次数

如何检查shell脚本中是否存在文件

我想编写一个shell脚本来检查某个文件archived_sensor_data.json是否存在,如果存在,则删除它.在http://www.cyberciti.biz/tips/find-out-if-file-exists-with-conditional-expressions.html之后,我尝试了以下方法:

[-e archived_sensor_data.json] && rm archived_sensor_data.json
Run Code Online (Sandbox Code Playgroud)

但是,这会引发错误

[-e: command not found
Run Code Online (Sandbox Code Playgroud)

当我尝试test_controller使用该./test_controller命令运行生成的脚本时.代码有什么问题?

shell

151
推荐指数
5
解决办法
33万
查看次数

何时在shell变量周围包装引号?

有人能告诉我是否应该在shell脚本中包含变量的引号?

例如,以下是正确的:

xdg-open $URL 
[ $? -eq 2 ]
Run Code Online (Sandbox Code Playgroud)

要么

xdg-open "$URL"
[ "$?" -eq "2" ]
Run Code Online (Sandbox Code Playgroud)

如果是这样,为什么?

unix linux bash shell quotes

145
推荐指数
4
解决办法
5万
查看次数

bash if -a vs -e选项

Bash文档中的 about -a-eoptions 都说:

-a file
    True if file exists.
-e file
    True if file exists. 
Run Code Online (Sandbox Code Playgroud)

试图找出差异,我运行了以下脚本:

resin_dir=/Test/Resin_wheleph/Results

if [ -e ${resin_dir} ] ; then
    echo "-e ";
fi

if [ ! -e ${resin_dir} ] ; then
    echo "! -e";
fi

if [ -a ${resin_dir} ] ; then
    echo "-a";
fi

if [ ! -a ${resin_dir} ] ; then
    echo "! -a";
fi
Run Code Online (Sandbox Code Playgroud)

/Test/Resin_wheleph/Results存在并且是一个目录.这就是我得到的:

-e
-a
! -a
Run Code Online (Sandbox Code Playgroud)

这似乎有点奇怪(注意-a! -a).但是当我if [[ …

bash

54
推荐指数
2
解决办法
6万
查看次数

一举测试多个文件条件(BASH)?

通常在为bash shell编写时,需要测试文件(或目录)是否存在(或不存在)并采取适当的操作.这些测试中最常见的是......

-e- 文件存在,-f- 文件是常规文件(不是目录或设备文件),-s- 文件不是零大小,-d- 文件是目录,-r- 文件具有读取权限,-w- 文件具有写入或-x执行权限(对于用户)运行测试)

这很容易确认,如此用户可写目录所示 ....

#/bin/bash

if [ -f "/Library/Application Support" ]; then
echo 'YES SIR -f is fine'
else echo 'no -f for you'
fi

if [ -w "/Library/Application Support" ]; then
echo 'YES SIR -w is fine'
else echo 'no -w for you'
fi

if [ -d "/Library/Application Support" ]; then
echo 'YES SIR -d is fine'
else …
Run Code Online (Sandbox Code Playgroud)

testing syntax bash scripting

35
推荐指数
3
解决办法
4万
查看次数

从zsh中输入bash时如何加载〜/ .bash_profile?

我已经使用了两年的bash,并试图通过自制软件在我的OS X上切换到zsh shell.我将我的默认(登录)shell设置为zsh,并通过查看当我启动终端时确认它设置正确,它是默认使用的zsh shell.

但是,当我尝试从zsh中输入bash shell时,它看起来没有加载~/.bash_profile,因为我无法使用别名运行我的命令,这是我~/.bash_profile喜欢的alias julia="~/juila/julia"等等.此外,提示不是我在文件中设置的而是返回bash-3.2$.

出于某些原因,当我将登录shell设置为bash,并从bash中输入zsh时,则~/.zshrc正确加载.

那么为什么每当我bash在zsh中运行时它都没有被加载?我~/.bash_profile是符号链接~/Dropbox/.bash_profile,以便与我的其他计算机同步.也许它会导致这个问题?

unix macos bash shell user-profile

35
推荐指数
6
解决办法
3万
查看次数

如何检查文件是否存在并执行命令?

我有一个使用Python编写的守护进程.当它运行时,它有一个位于/tmp/filename.pid的PID文件.如果守护程序未运行,则PID文件不存在.

在Linux上,如何检查以确保PID文件存在,如果不存在,请执行命令重新启动它?

命令是

python daemon.py restart
Run Code Online (Sandbox Code Playgroud)

必须从特定目录执行.

linux shell

22
推荐指数
5
解决办法
5万
查看次数

检查文件是否存在,然后继续在Bash中退出

我有一个脚本,它是发送电子邮件的其他链中的一个脚本.

在脚本开始时,我想检查文件是否存在,只有在存在时才继续,否则只是退出.

这是我的脚本的开始:

if [ ! -f /scripts/alert ];
then
    echo "File not found!" && exit 0
else
        continue
fi
Run Code Online (Sandbox Code Playgroud)

但是我不断收到一条消息说:

line 10: continue: only meaningful in a `for', `while', or `until' loop
Run Code Online (Sandbox Code Playgroud)

有什么指针吗?

bash if-statement continue

18
推荐指数
1
解决办法
8万
查看次数

如何检查Bash中是否存在某些文件?

bash脚本中,我必须检查是否存在多个文件.

我知道一种笨拙的方法,如下所示,但这意味着我的主程序必须在那个丑陋的嵌套结构中:

if [ -f $FILE1 ]
then
if [ -f $FILE2 ]
then
  echo OK
  # MAIN PROGRAM HERE
fi
fi
Run Code Online (Sandbox Code Playgroud)

以下版本不起作用:

([ -f $FILE1 ] && [ -f $FILE2 ]) ||  ( echo "NOT FOUND"; exit 1 )
echo OK
Run Code Online (Sandbox Code Playgroud)

它打印

NOT FOUND
OK
Run Code Online (Sandbox Code Playgroud)

有一种优雅的方式来做到这一点吗?

更新:查看接受的答案.另外,在优雅方面我喜欢Jonathan Leffler的回答:

arg0=$(basename $0 .sh)
error()
{
    echo "$arg0: $@" 1>&2
    exit 1
}

[ -f $FILE2 ] || error "$FILE2 not found"
[ -f $FILE1 ] || …
Run Code Online (Sandbox Code Playgroud)

error-handling bash shell

6
推荐指数
2
解决办法
1万
查看次数

检查文件是否存在Linux bash

所以我正在尝试检查文件是否存在,然后脚本应该执行某些操作.我遇到的问题实际上是让它认识到某些东西确实存在.

if [ -e /temp/file.txt ]; then
        echo "file found!"
        sudo cp -r temp/* extra
else
        echo "file not found! Creating new one..."
        ./create.sh
fi
Run Code Online (Sandbox Code Playgroud)

下面是我正在测试的目录中的文件示例.它们显然存在,但由于某种原因,我无法让脚本看到它.我究竟做错了什么?

nima@mkt:/docs/text$ ls -a temp
.  ..  more  file.txt  file2.txt
Run Code Online (Sandbox Code Playgroud)

linux bash file

3
推荐指数
1
解决办法
2万
查看次数

如何检查文件在Bash中是否可执行

我正在尝试构建一个条件,检查文件是否已设置执行访问位.我不能用grep找到.

我尝试检查ls -l命令中的"x"字母,但在许多情况下这是错误的.

for val in `ls $1`
do
  if [[ "`ls -l $1/$val`" -eq *w* ]]
  then
    rm $1/$val
  fi
done
Run Code Online (Sandbox Code Playgroud)

请帮忙或给出一些建议!

bash ls

2
推荐指数
1
解决办法
5399
查看次数

如何使用bash检查服务器上是否存在文件

检查我的计算机上是否存在文件很容易.但是如何检查我的服务器上是否存在此文件?

如果我的文件是:

host@server:/path/to/my/file.txt
Run Code Online (Sandbox Code Playgroud)

我需要做什么来检查它是否存在?

bash shell

1
推荐指数
1
解决办法
8608
查看次数

如果文件在linux中被删除,则触发命令

假设我有一个文件/local/content/en/abc.html,我有一个相同的文件/local/en/abc.html.我想添加一个观察程序,/local以便/local/content/en/abc.html在删除后自动删除该/local/en/abc.html文件.

我怎样才能做到这一点?我有一个Linux环境.这可以是一个bash文件,它将是/local目录.

linux bash cron

-1
推荐指数
1
解决办法
97
查看次数