我执行
$ ssh remotehost "exit 1"
$ echo $?
0
结果是 0 而不是 1。
我在 stackoverflow 上看到,应该是 1。出了什么问题?TIA!
更新(解决方案):
ssh
是该站点上的一项功能,在 ssh 调用之后会执行一个命令。
正在执行/usr/bin/ssh remotehost "exit 1"
,exit-code
是1
。
感谢@jeb:)
我执行
$ ssh remotehost "exit 1"
$ echo $?
0
结果是 0 而不是 1。
我在 stackoverflow 上看到,应该是 1。出了什么问题?TIA!
更新(解决方案):
ssh
是该站点上的一项功能,在 ssh 调用之后会执行一个命令。
正在执行/usr/bin/ssh remotehost "exit 1"
,exit-code
是1
。
感谢@jeb:)
你好,我想从 cli 中提取输出第一列中的元素,如下所示:
Title
----------------------------------
| Column A | Column B | Column C |
| -------- | -------- | -------- |
> Cell 1 Cell2 Cell5
Cell 3 Cell4 Cell6
我希望从第一列提取所有元素。此表的特点:
例如
Title
----------------------------------
| Names | ID | Sales |
| -------- | -------- | -------- |
> Fin Bo 192019 10
QuarGem 12982 1
> Fin Bo
我想要QuarGem
我可以访问 sed、awk、grep 和其他 Linux 工具,目前已尝试以下操作:
cat ./table | tail -n +5 | awk '{print $1}'
但它未能给出正确的结果,而是给出了以下内容:
>
W-44XA45
Flint
对于输入:
Title
--------------------------------------------------------------------------------
name id sales
--------------------------------------------------------------------------------
> quantum pki 10
W-44XA45 aks 1
Flint GD ixs 2
我指的是《Linux shell 脚本手册》一书中的以下命令。
find . -name '*.txt' | xargs -I ^ sh -c "echo -ne '\n ^: '; grep arg ^"
并有以下疑问:
^
是任何符号,如 {} 或 #,只要它们在与 相同的位置使用即可^
。-ne
每个文件名上方都印有,这是为什么以及如何解决?我编写了一个 shell 脚本来启动多个后台作业,并使用 将它们的进程 ID 存储在数组中$!
。最后,我通过遍历数组打印所有进程 ID。我想知道编写的 shell 脚本是否有错误?而且,我觉得我的 shell 脚本中有错误的原因是,$!
如果在我的 PC 中创建了多个进程,它可能会返回另一个进程的进程 ID。
#!/bin/bash
ps -a & pids+=($!) #Does $! return process id of command ps -a for sure
ls -la & pids+=($!) #Does $! return process id of command ls -la for sure
echo ${pids[0]}
echo ${pids[1]}
我想要将mv
最新的文件复制到指定目录。
ls -1t ~/Downloads | head -1 | gsed 's|^|~/Downloads/|g' | xargs -I {} mv {} ~/test/
输出:
mv: rename ~/Downloads/latest.jpg to /Users/home/test: No such file or directory
但以下命令确实有效:
mv ~/Downloads/latest.jpg ~/test/
所以我认为它不起作用的原因是 xargs 命令。
我的环境是MacOS。
我有一个像这样的 CSV 源文件。
id;kat;kat_de;kat_en;kat_sub_de;kat_sub_en;name;strasse;plz;gemeinde;landkreis;stellplaetze;emob;linien;website;phone;betreiber;oeffnungszeiten;vbn;x_wgs84;y_wgs84;haltestelle
VW105044690;5;Kundencenter;Costumer Service Centres;retail,office,information,ticket;retail,office,information,ticket;Kunden-Servicecenter Vegesack BSAG Kundencenter;Vegesacker Bahnhofsplatz;28757;Bremen;Bremen;0;f;;https://bsag.de/de/tickets/kundencenter-servicestellen/bsag-kundencenter-vegesack.html https://bsag.de/de/tickets/kundencenter-servicestellen/bsag-kundencenter-vegesack.html;"";BSAG;"Mo-Fr 07:00-18:30; Sa 09:00-15:00; Su,PH off";f;8.628101750000006;53.16975189909493;
第 18 列包含 OSM 标签opening_hours的值。该值通常为英文。
我喜欢将Abbr.
英语Day of week
改为德语
Abbr. Day of week
Mo Monday
Tu Tuesday
We Wednesday
Th Thursday
Fr Friday
Sa Saturday
Su Sunday
PH off Public Holiday
到
Abbr. Day of week
Mo Monday
Di Tuesday
Mi Wednesday
Do Thursday
Fr Friday
Sa Saturday
So Sunday
Feiertag Public Holiday
off geschlossen
这意味着目标文件将看起来像这个例子。
id;kat;kat_de;kat_en;kat_sub_de;kat_sub_en;name;strasse;plz;gemeinde;landkreis;stellplaetze;emob;linien;website;phone;betreiber;oeffnungszeiten;vbn;x_wgs84;y_wgs84;haltestelle
VW105044690;5;Kundencenter;Costumer Service Centres;retail,office,information,ticket;retail,office,information,ticket;Kunden-Servicecenter Vegesack BSAG Kundencenter;Vegesacker Bahnhofsplatz;28757;Bremen;Bremen;0;f;;https://bsag.de/de/tickets/kundencenter-servicestellen/bsag-kundencenter-vegesack.html https://bsag.de/de/tickets/kundencenter-servicestellen/bsag-kundencenter-vegesack.html;"";BSAG;"Mo-Fr 07:00-18:30; Sa 09:00-15:00; So,Feiertag geschlossen";f;8.628101750000006;53.16975189909493;
知道如何使用 GNU/Linux shell 脚本来解决这个问题吗?
我希望能够在 zsh 中执行“可变参数赋值”。
我认为以下内容可行,但我得到parse error near
=("${(@)1}")'`:
variadic() {
local a b
(a, b)=("${(@)1}")
echo "$a, $b!"
}
$ variadic Hello world # Desired output: Hello, world!
(a, b)=($1 $2)
导致类似的错误。
谢谢
我有一个备份脚本,它可以完成这项工作,但需要很长时间才能完成,因为它将用户目录逐一与 DEV_Servers.txt 中的服务器列表进行对比。
有没有办法让 tar 命令同时针对所有服务器列表运行,而不是逐个浏览列表?
#!/bin/ksh
print "==========================================="
print "Taking backup of Users dir"
print "==========================================="
serverList="DEV_Servers.txt"
while read -r server;
do
print
print "==========================================="
print "Taking Backup of Users:" $server
ssh -o StrictHostKeyChecking=no -n $server "cd /opt/test/ ; tar -zcvf 'Users$(date '+%Y%m%d').tar.gz' Users"
done < "$serverList"
我编写了代码,以便根据间隔更快地在自控中引入 promodoro 的时间。但是我无法引入自动,它只是打开对话框来输入密码。密码输入
tell application "WebPomodoro"
activate
end tell
set input to text returned of (display dialog "Ingresa un número para el Pomodoro:" default answer "" with icon note buttons {"Continue"} default button "Continue")
try
set inputNumber to (input as integer)
on error
display dialog "El texto ingresado no es un número válido."
end try
set total_time to 0
repeat with interval from 1 to inputNumber
set total_time to total_time + 25
if interval mod 4 = 0 then
set total_time to total_time + 25
else
set total_time to total_time + 5
end if
end repeat
set hours to (total_time div 60)
set minutes to (total_time mod 60)
display dialog (hours as string) & " horas y " & (minutes as string) & " minutos"
delay 2
tell application "SelfControl"
activate
end tell
delay 15 --set time
set myPassword to "password"
tell application "System Events"
-- Buscar el cuadro de diálogo de SelfControl
tell process "SelfControl"
keystroke myPassword
keystroke return
end tell
end tell
我想将 shell 变量的内容原封不动地写入管道。“echo -n”也很好。
每个人都说“使用 printf”,类似
echo() {
case "$1" in
-n) shift; printf '%s' "$*" ;;
*) printf '%s\n' "$*" ;;
esac
}
但由于 printf 是外部命令,因此它可以作为参数的字符数是有限的,通常为 131072 或 65536,也可能更少,具体取决于操作系统。我正在处理 json 问题列表,长度可能高达数百 K,并且它必须在任何地方都能正常工作。
您不能使用“echo -e”,因为 dash 的内置 echo 总是映射反斜杠序列。
在基本 shell 中必须有一种方法,无需使用外部程序,即可将变量的内容写入管道或文件。
没有嗎?