我想将 shell 命令的输出分配给一个变量。
如果我直接回显命令,代码将正确执行:
for ((i=0; i<${#result[@]}; i++)); do
echo ${result[$i]} | awk '{print $1}'
done
Run Code Online (Sandbox Code Playgroud)
但是,如果我将它分配给一个变量,
size=`${result[$i]} | awk '{print $1}'`
echo $size
Run Code Online (Sandbox Code Playgroud)
或者
size=$(${result[$i]} | awk '{print $1}')
echo $size
Run Code Online (Sandbox Code Playgroud)
他们不工作。
我该如何解决?
我尝试了不同的压缩文件夹的方法。我的理解是 Python 内置模块总是比 subprocess.call("Linux command") 快。但我只是做了一些演示。tarfile 模块比 subprocess.call("tar") 慢。有人可以向我解释一下吗?
#!/usr/bin/python
import os
import time
import tarfile
import subprocess
tStart1 = time.time()
TestFolder = ["Jack", "Robin"]
for folder in TestFolder:
name = "/mnt/ShareDrive/Share/ExistingUsers/"+folder
path = "/mnt/TEST2/"
tar = tarfile.open(path+folder+".tar.gz", "w:gz")
tar.add(name)
tar.close()
tEnd1 = time.time()
time.sleep(2)
tStart2 = time.time()
for folder in TestFolder:
path = "/mnt/TEST1/"
subprocess.call(["tar", "zcvf", path+folder+".tar.gz", "-P", "/mnt/ShareDrive/Share/ExistingUsers/"+folder])
tEnd2 = time.time()
print "The module cost %f sec" % (tEnd1 - tStart1)
print "The subprocess cost %f sec" % …
Run Code Online (Sandbox Code Playgroud) 如果命令有任何错误,我想停止我的 BASH。
make clean || ( echo "ERROR!!" && echo "ERROR!!" >> log_file && exit 1 )
Run Code Online (Sandbox Code Playgroud)
但我的 BASH 似乎仍在继续。如何输入exit 1
单行运算符
我对 BASH 非常陌生,非常感谢任何帮助!