我不断收到TypeError'Range'对象不支持项目分配。我试着在范围之前添加iter(...)以及范围之前的list(...)来稍微更改代码。但是,它没有帮助,错误仍然存在。这是代码:
def findAnchor(anchors, node):
start = node
while node != anchors[node]:
node = anchors[node]
anchors[start] = node
return node
def unionFindConnectedComponents(graph):
anchors = range(len(graph))
for node in iter(range(len(graph))):
for neighbor in graph[node]:
if neighbor < node:
continue
a1 = findAnchor(anchors, node)
a2 = findAnchor(anchors, neighbor)
if a1 < a2:
anchors[a2] = a1
elif a2 < a1:
anchors[a1] = a2
labels = [None]*len(graph)
current_label = 0
for node in range(len(graph)):
a = findAnchor(anchors, node)
if a == node:
labels[a] = current_label …Run Code Online (Sandbox Code Playgroud) 新手在这里打击.我希望在bash中为一个变量添加一个空格,目前我有以下内容,它似乎不起作用:
space=`printf '%1s' ' '`
mystr='hello'
mystr="$space$mystr"
echo $mystr
Run Code Online (Sandbox Code Playgroud)
因此,我不希望打印出"hello",而是希望结果是"hello",它在开头有一个额外的空格.这样做的正确方法是什么?谢谢.
如果我想在程序的输出超过屏幕上的行数时清除屏幕并减少运行,我可以执行以下操作:
mypgm | tee mypgm.out
LEN=$(wc -l mypgm.out | cut -f1 -d' ')
[[ $LEN >= $LINES ]]; then
clear
less -R mypgm.out
fi
Run Code Online (Sandbox Code Playgroud)
只要输出中的任何行都没有环绕,它就可以正常工作,视觉上在屏幕上占据了不止一行。有没有一种简单的方法可以确定输出在视觉上占据了多少行,或者我是否必须循环输出文件,使用 $COLUMNS 计算长行需要显示的“行”数
我试图在我的bash脚本中使用cut命令.我需要在其名称中获取包含'sys'的rpm包的名称,而不是其完整路径.所以我尝试了这个:
packageName=$(find temp/noarch/ -name '*sys*noarch.rpm' | cut -d "\/" -f 3)
Run Code Online (Sandbox Code Playgroud)
我以为这样可以在没有temp/noarch /的情况下返回包名,但它只告诉我.我知道我可以删除子串"temp\/noarch\/",但我想用切割它.
提前致谢 !
我想要一个 bash 函数来改变这个……
download HELLO&P=1&Q=2
Run Code Online (Sandbox Code Playgroud)
进入这个……
aria2c -d ~/Downloads "HELLO&P=1&Q=2"
Run Code Online (Sandbox Code Playgroud)
HELLO&P=1&Q=2是一个磁力链接。如果它周围没有双引号,则 aria2c 不起作用。但我似乎无法把它们放在一起。问题似乎是 MAGNET 链接&key=value的末尾有一系列对(在我的示例中&P=1&Q=2),并且这些对似乎被剥离并与链接的其余部分分开(即HELLO)。
这是我的.bash_profile功能。
download() {
aria2c -d ~/Downloads "$1"
}
Run Code Online (Sandbox Code Playgroud)
这是一个示例输出。
~ $ download HELLO&P=1&Q=2
[1] 7389
[2] 7390
aria2c -d /Users/lukejanicke/Downloads HELLO
[1]- Done download HELLO
[2]+ Done P=1
~ $
Run Code Online (Sandbox Code Playgroud)
甚至不知道去了哪里Q=2。通过真正的 MAGNET 链接,所有部件都以这种枚举方式显示。
我需要某种方式将整个 MAGNET 链接捕获为单个参数,然后aria2c在链接周围使用引号执行命令。
执行时./test.sh 12.34,grep应该匹配12.34而不是匹配12-34.如何实现这一目标?
#!/bin/sh
ip=$1
echo $ip
if netstat | grep ssh | grep $ip; then
netstat | grep ssh | grep $ip
else
echo 'No'
fi
Run Code Online (Sandbox Code Playgroud) 我尝试创建一个应该检测每个组的最新文件的脚本,并为其原始名称添加前缀.
ll $DIR
asset_10.0.0.1_2017.11.19 #latest
asset_10.0.0.1_2017.10.28
asset_10.0.0.2_2017.10.02 #latest
asset_10.0.0.2_2017.08.15
asset_10.1.0.1_2017.11.10 #latest
...
Run Code Online (Sandbox Code Playgroud)
2个问题:
1)如何查找每个组的最新文件?
2)如何重命名只添加前缀
我尝试了以下过程,但它在整个目录中查找最新文件,并且不保留原始名称以向其添加前缀:
find $DIR -type f ! -name 'asset*' -print | sort -n | tail -n 1 | xargs -I '{}' cp -p '{}' $DIR...
Run Code Online (Sandbox Code Playgroud)
实现这一目标的最佳方法是什么?(尽可能保持xargs)
当我尝试提交此内容时,服务器将消息发回给我
"Unexpected token t in JSON at position 1".
无论第一个非 { 非 " 字符是什么,它都会这样做。如果我输入 {"": ""} 它会说
"Unexpected token : in JSON at position 1".
Run Code Online (Sandbox Code Playgroud)
这是我的代码。
curl -H "Content-Type: application/json" -d {"test": "test"} url
Run Code Online (Sandbox Code Playgroud)
我已经尝试了在它周围加上引号并转义引号的其他变体,但无济于事,但如果您认为这是问题,请随时提出一种格式。
我想加 10 秒 10 次。但我不太清楚如何为价值增加时间。
这是我的代码。
./time.sh
time=$(date)
counter=1
while [ $counter -le 10 ]
do
echo "$time"
time=$('$time + 10 seconds') //error occurred.
((counter++))
done
echo All done
Run Code Online (Sandbox Code Playgroud) 我有一个Bash脚本需要调用一个命令,该命令需要其中一个参数的引号.当我运行命令
myTimeCommand --time="2018 04 23 1100" -o /tmp/myOutput ~/myInput
Run Code Online (Sandbox Code Playgroud)
从命令行,它工作正常.在我的脚本中,我想传递"2018 04 23 1100"作为参数并将其直接发送到命令.
myScript --time="2018 04 23 1100"
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试这个时,我收到一条错误消息
""2018" is not a valid time.
Run Code Online (Sandbox Code Playgroud)
我正在使用getopt解析参数.这是我的剧本
OPTIONS=t:
LONGOPTIONS=time:
PARSED=$(getopt --options=$OPTIONS --longoptions=$LONGOPTIONS --name "$0" -- "$@")
echo ${PARSED}
# read getopt’s output this way to handle the quoting right:
eval set -- "$PARSED"
# now enjoy the options in order and nicely split until we see --
while true; do
echo "option: ${1}"
case "$1" in
-t|--time)
timeBase="$2"
timeBase="--time=\"${timeBase}\"" …Run Code Online (Sandbox Code Playgroud)