我不知道这是一件坏事,还是意味着什么。我的脚本似乎仍然可以正常工作,但我应该修复它吗?
#!/bin/sh
#This script will send text and maybe images to other computers via ssh and scp.
#Configuration files in same folder
source /Users/jacobgarby/Desktop/messaging/messages.cfg
TIME=$(date +"%H:%M:%S")
CONNECTED[0]="mainmini@192.168.1.65"
if [ -d messages.log ]; then
:
else
touch messages.log
fi
read MSG
if [ "$MSG" == "!help" ]; then
echo ; echo "!clear Clear's your personal chat log."
echo "!ban [usrname] Prevents a user from entering this chat IN DEV."
else
echo "$TIME | $USER | $MSG" >> messages.log; echo >> messages.log; …Run Code Online (Sandbox Code Playgroud) 我有一个文件,我想在其中压缩并同时使用 scp 传输到另一台主机。
我尝试执行以下命令但失败了。我不介意稍后拉上拉链和 scp,但我只想知道我哪里弄错了
使用管道我错了吗?在这里?
-bash-3.2$ gzip -c aum.dmp | scp oracle@192.168.0.191:/export/home/oracle/aum.dmp.gz
Usage: scp [-pqrvBC46] [-F config] [-S program] [-P port]
[-c cipher] [-i identity] [-o option]
[[user@]host1:]file1 [...] [[user@]host2:]file2
Run Code Online (Sandbox Code Playgroud)
问候, 菜鸟
的文档exec说,如果当前 shell 是非交互式的并且execfail没有设置选项,它会在出错的情况下退出 shell 。
我注意到交互式 bash shell 中有一个奇怪的行为,但我无法用文档解释。这个命令
exec non-existent-file
Run Code Online (Sandbox Code Playgroud)
产生一条错误消息,并且 shell 保持活动状态,正如预期的那样。但是如果我将相同的命令放入一个文件和source那个文件中,当前的 shell 将被失败的 exec 退出。
有人可以帮助我理解为什么会发生这种情况吗?
经过一些 bash 自学和试验,我坚持从函数返回一个数组,并且我一生都看不到我的错误。
简而言之,这应该/必须做的是使用具有从文件中读取值/字符串的函数,返回一个数组:
在我看来,该函数似乎读取整个文件而不是逐行读取,从而将所有字符串放入数组中的单个单元格中,我不确定如何将 clients[0] 显式显示为 $(clients[0] ]) 在 bash 代码中失败
如果通过某种方式我做错了什么,也请指出这一点或任何关于优化这一点的建议
#!/bin/bash
readArray(){
local array=()
local i=0;
local j=0
while IFS= read -r LINE && [[ -n "$LINE" ]] ; do
array[$((i++))]+=${LINE}; # Append line to the array
((j++))
done < "$1";
rtr=${array[@]}
}
string="/home/cybex/openvpntest/openvpn.log"
declare -a clients
#sed -i '/^$/d' $string
clients=$(readArray "$string")
echo "${clients[@]}"
echo -e "array not empty, displaying array contents\n"
for i in "${!clients[@]}"; do
echo "$i: ${clients[$i]}"
done
echo -e …Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的问题要问你们。在浏览了文档和此处的站点后,我想知道是否可以防止 grep 在同一行上输出每个匹配项。
在我的示例中,我需要采用\xeb\x1a\x5e\x31\xc0\x88\x46\x07...等格式的字符串。我grep -oP "x\K(\S\S)")用来获取每个十六进制数字。
输出是正确的,但是每个匹配项都在自己的行上。这是一个问题,因为我需要将此输出提供给另一个程序。再说一次,有没有办法在没有任何类型的填充的情况下连续放置每个匹配项?
我有一堆二进制文件输出如下数据:
-0.002019
-0.000790
0.000158
0.001539
Run Code Online (Sandbox Code Playgroud)
这只是一堆数字,我想在 y 轴上绘制在 x 轴上具有相等间距的数字。
输出实际上有几千行长。
我需要一种简单的方法将它传递给绘制它的东西,如下所示:
./program_dumping_numbers | ??? # a simple window of the plot pops up!
Run Code Online (Sandbox Code Playgroud) 我创建了一个运行 shell 脚本的 cron 作业。我希望 shell 脚本运行并捕获它的输出,并在完成后通过电子邮件发送。到目前为止,这是我所拥有的,但邮件正文是空的。
我已经尝试了以下所有方法:
/root/myscript.sh | tee output.txt | mail -s "Email subject" me@mymail.com
/root/myscript.sh | tee output.txt | mail -s "Email subject" me@mymail.com &> /dev/null
/root/myscript.sh | tee output.txt && mail -s "Email subject" me@mymail.com < output.txt &> /dev/null
/root/myscript.sh > tee output.txt && mail -s "Email subject" me@mymail.com < output.txt &> /dev/null
Run Code Online (Sandbox Code Playgroud)
所有这些都正常运行,但它们会产生一封空正文的电子邮件。运行脚本确实会在 stdout 上产生输出。
在文件中/etc/passwd我们有所谓的GECOS fields(代表“通用电气综合操作系统”),即:
username:password:userid:groupid:gecos:home-dir:shell
Run Code Online (Sandbox Code Playgroud)
其中GECOS分为:
:FullName,RoomAddress,WorkPhone,HomePhone,Others:
Run Code Online (Sandbox Code Playgroud)
并被Others分成任意多的逗号:
:FullName,RoomAddress,WorkPhone,HomePhone,Other1,Other2,Other3:
Run Code Online (Sandbox Code Playgroud)
在man chfn页面中可以阅读:
另一个字段用于存储其他应用程序使用的记帐信息。
现在,应用程序开发人员(我很感兴趣C language,system calls和/或bash script),这就是抓住这个信息的最佳方式?
仅考虑Bash环境,鉴于该finger命令无法显示others字段(或者至少我不知道如何显示),还有哪些其他命令可以显示?我知道这chfn不仅是展示,而且是允许它们被改变。如果只是将它输出到stdout怎么办?
我有一个 bash 脚本,其中$DIR是一个可能包含空格的目录名。
这个:
rm "$DIR/*.MOV"
Run Code Online (Sandbox Code Playgroud)
给出错误“没有这样的文件或目录”。没有字面上命名为“*.MOV”的文件;我希望*扩展为多个参数 - 每个匹配的文件名一个。
例如:
rm some\ folder/foo.MOV some\ folder/bar.MOV
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我有一个文件:
/Users/danylo.volokh/test/test_bash_script.sh
Run Code Online (Sandbox Code Playgroud)
内容很简单:
#!/usr/bin/env bash
echo "-- print from script"
Run Code Online (Sandbox Code Playgroud)
我在文件夹“danylo.volokh”中
此命令运行良好:
Danilos-MacBook-Pro:~ danylo.volokh$ test/test_bash_script.sh
-- print from script
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试使用绝对路径运行,则会出现错误:
Danilos-MacBook-Pro:~ danylo.volokh$ /test/test_bash_script.sh
-bash: /test/test_bash_script.sh: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我想从任何文件夹运行具有绝对路径的命令并获取要执行的脚本。