0

我有一个用于某些文件的 pythonp.py脚本exit("ABC")。我想编写一个 Ubuntu shell 来将制作脚本的文件复制exit("ABC")到一个文件夹中:

#!/bin/bash

FILES=*.txt
TOOL=p.py
TAREGT=../TARGET/

for f in $FILES
do
    if [ $(python $TOOL $f) = "ABC" ]
    then
        echo "$f"
        cp $f $TARGET
    fi
done

但它说,条件检查if [ $(python $TOOL $f) = "ABC" ]似乎不起作用./filter.sh: line 13: [: =: unary operator expected。谁能告诉我出了什么问题?

4

1 回答 1

1

参数 toexit()是 Python 脚本返回的内容(成功/错误)。(Python 的文档exit()。注意如何exit( "ABC" )不返回"ABC",但将其打印stderr返回 1。)

返回码是$?调用 shell 的变量中的结果,或者您要测试的内容,如下所示:

# Successful if return code zero, failure otherwise.
# (This is somewhat bass-ackwards when compared to C/C++/Java "if".)
if python $TOOL $f
then
    ...
fi

该构造被调用的脚本/可执行文件的输出$(...)替换,这完全是另一回事。

如果你在比较字符串,你必须引用它们

if [ "$(python $TOOL $f)" = "ABC" ]

或使用 bash 的改进测试[[

if [[ $(python $TOOL $f) = "ABC" ]]
于 2013-07-10T13:30:22.727 回答