怎么if __name__ == "__main__":
办?
# Threading example
import time, thread
def myfunction(string, sleeptime, lock, *args):
while True:
lock.acquire()
time.sleep(sleeptime)
lock.release()
time.sleep(sleeptime)
if __name__ == "__main__":
lock = thread.allocate_lock()
thread.start_new_thread(myfunction, ("Thread #: 1", 2, lock))
thread.start_new_thread(myfunction, ("Thread #: 2", 2, lock))
Run Code Online (Sandbox Code Playgroud) 我想保留(现在)能够将Git变更集链接到存储在TFS中的工作项.
我已经编写了一个工具(使用Git中的一个钩子),我可以在其中将workitemidentifiers注入到Git变更集的消息中.
但是,我还想将Git提交的标识符(哈希)存储到自定义TFS工作项字段中.通过这种方式,我可以检查TFS中的工作项,并查看与工作项相关联的Git更改集.
如何从Git的当前提交中轻松检索哈希?
最近在一次代码审查中,一位同事声称该[[ ]]
构造比[ ]
在类似的构造中更受欢迎
if [ "`id -nu`" = "$someuser" ] ; then
echo "I love you madly, $someuser"
fi
Run Code Online (Sandbox Code Playgroud)
他无法提供理由.有吗?
我有一个脚本,exit
如果它被采购我不希望它调用.
我想过检查是否$0 == bash
但如果脚本来自另一个脚本,或者如果用户从不同的shell中获取它,则会出现问题ksh
.
是否有可靠的方法来检测脚本是否来源?
我有一个shell脚本,我想用shUnit测试.脚本(和所有功能)都在一个文件中,因为它使安装更容易.
示例 script.sh
#!/bin/sh
foo () { ... }
bar () { ... }
code
Run Code Online (Sandbox Code Playgroud)
我想编写第二个文件(不需要分发和安装)来测试中定义的函数 script.sh
就像是 run_tests.sh
#!/bin/sh
. script.sh
# Unit tests
Run Code Online (Sandbox Code Playgroud)
现在的问题在于.
(或source
在Bash中).它不仅解析函数定义,还执行脚本中的代码.
由于没有参数的脚本没有任何坏处,我可以
. script.sh > /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)
但如果有更好的方法来实现我的目标,我就会徘徊.
编辑
我建议的解决方法在源脚本调用的情况下不起作用,exit
所以我必须捕获退出
#!/bin/sh
trap run_tests ERR EXIT
run_tests() {
...
}
. script.sh
Run Code Online (Sandbox Code Playgroud)
run_tests
调用该函数但是只要我重定向source命令的输出,脚本中的函数就不会被解析,并且在陷阱处理程序中不可用
这有效,但我得到的输出script.sh
:
#!/bin/sh
trap run_tests ERR EXIT
run_tests() {
function_defined_in_script_sh
}
. script.sh
Run Code Online (Sandbox Code Playgroud)
这不打印输出但是我得到一个错误,该函数未定义:
#!/bin/sh
trap run_tests ERR EXIT
run_tests() {
function_defined_in_script_sh
}
. script.sh …
Run Code Online (Sandbox Code Playgroud) 我试图逐行读取输入文件,其中包含由句点分隔的字段.我想将它们放入一个数组数组中,以便稍后我可以循环它们.输入似乎没问题,但是将它"推"到数组(inData)似乎不起作用.
代码如下:
Input file:
GSDB.GOSALESDW_DIST_INVENTORY_FACT.MONTH_KEY
GSDB.GOSALESDW_DIST_INVENTORY_FACT.ORGANIZATION_KEY
infile=${1}
OIFS=$IFS
IFS=":"
cat ${infile} | while read line
do
line=${line//\./:}
inarray=(${line})
# echo ${inarray[@]}
# echo ${#inarray[@]}
# echo ${inarray[0]}
# echo ${inarray[1]}
# echo ${inarray[2]}
inData=("${inData[@]}" "${inarray[@]}")
done
IFS=$OIFS
echo ${#inData[@]}
for ((i = 0; i < ${#inData[@]}; i++))
do
echo $i
for ((j = 0; j < ${#inData[$i][@]}; j++))
do
echo ${inData[$i][$j]}
done
done
Run Code Online (Sandbox Code Playgroud) 我正在编写一个shell脚本,用于读取具有key = value对的文件,并将这些变量设置为环境变量.但我有一个疑问,如果我愿意source file.txt
将该文件中定义的变量设置为环境变量,或者我应该逐行读取文件并使用export命令设置它?
在这种情况下,源命令是否与导出不同?
bash ×3
shell ×2
arrays ×1
changeset ×1
git ×1
idioms ×1
if-statement ×1
ksh ×1
linux ×1
namespaces ×1
python ×1
syntax ×1
tfs ×1
tfs-workitem ×1
unix ×1