如果我有一个包含 5 个元素的数组,例如:
[a][b][c][d][e]
Run Code Online (Sandbox Code Playgroud)
使用echo ${myarray[4]}我可以看到它包含什么。
但是如果我不知道给定数组中的元素数量怎么办?有没有办法读取未知长度数组的最后一个元素?即任何数组从右到左读取的第一个元素?
我想知道如何在 bash 中做到这一点。
我目前正在尝试了解在系统启动/引导时运行脚本的init.dcron 和 cron之间的区别@reboot。
使用的@reboot(这种方法中提到的这个论坛由hs.chandra)是一些什么比较简单,通过简单地进入crontab -e并创建一个@reboot /some_directory/to_your/script/your_script.txt,然后your_script.txt,应在每次系统启动时执行。的深入解释@reboot是here
或者通过嵌入/etc/init.d/your_script.txt到脚本的第二行,即:
#!/bin/bash
# /etc/init.d/your_script.txtRun Code Online (Sandbox Code Playgroud)
您可以运行,chmod +x /etc/init.d/your_script.txt并且your_script.txt每次系统启动时也应该运行。
Q1:两者的主要区别是什么?
Q2:哪个更健壮?
Q3:两者中是否有更好的一个?
Q4:这是嵌入脚本以在启动期间运行的正确方法吗?
我将合并一个 bash .sh 文件以在启动期间运行。
我有一个 cronjob 工作了大约两周,没有任何问题。然后昨晚我检查了我没有收到我通常收到的电子邮件。我去终端尝试给自己发一封电子邮件,我收到以下错误:
邮件:无法发送消息:进程以非零状态退出
我的 ssmtp cfg 文件没有改变任何东西。它只是停止工作,当我检查并重新检查所有内容时,代码,ssmtp,一切都很完美。
我每天通过 cronjob 发送两次电子邮件。crontab 也没有受到干扰。我真的不知道为什么它会停止工作。
系统通过 gmail 发送电子邮件 - 我已经进入 gmail 帐户并发送了测试电子邮件,它们的发送和接收没有任何问题。
此外,我检查了整个谷歌、论坛、网站,我没有看到任何错误。这是有道理的,因为 24 小时前一切正常,现在它刚刚停止。
问:有没有什么方法可以诊断和排除如何解决这样的问题?
我有一个想要操作的字符串。字符串是H08W2345678我如何能够操作它以便输出只是W2345678?
同样,如果我想删除最后 4 个字符H08W2345678以便我知道我将H08W234如何执行此操作?
我正在设置突袭。sda在安装过程中使用,我刚才复制的分区表sda来sdb像这样:
$ sudo sfdisk -dL /dev/sda > partition_table_sda
$ sudo sfdisk /dev/sdb < partition_table_sda
Run Code Online (Sandbox Code Playgroud)
但是我注意到sda交换空间有一个 uuid,但sdb没有:
$ sudo blkid
/dev/sda5: UUID="vvvvvvvv-wwww-xxxx-yyyy-zzzzzzzzzzzz" TYPE="swap"
/dev/sda1: UUID="vvvvvvvv-wwww-xxxx-yyyy-zzzzzzzzzzzz" TYPE="ext4"
/dev/sdb1: UUID="vvvvvvvv-wwww-xxxx-yyyy-zzzzzzzzzzzz" TYPE="ext4"
Run Code Online (Sandbox Code Playgroud)
分区看起来是正确的,只是缺少 uuid:
$ sudo fdisk -l
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): …Run Code Online (Sandbox Code Playgroud) 我有一个 [csv] 文件,其中重复打印了重复数据,即打印了两次相同的数据。我试过使用sort 的 uniq
bysort myfile.csv | uniq -u但是没有变化myfile.csv,我也试过sudo sort myfile.csv | uniq -u但没有区别。
所以目前我的 csv 文件看起来像这样
a
a
a
b
b
c
c
c
c
cRun Code Online (Sandbox Code Playgroud)
我想看起来像
a
b
cRun Code Online (Sandbox Code Playgroud) 除了使用分隔符之外,如何从终端读取破折号文件 ./
例如阅读 a- file我们可以通过以下方式阅读它
cat ./-file_name
问:有没有其他方法可以达到同样的目的?
我有一个客户端可以myfile.csv任意更新/写入。
我已经编写了以下代码,但省略了 MySQL 代码段:
while true
do
awk_variables_value_array=`tail -n2 myfile.csv | awk -F, '$7 == "status" {print $4, $5, $10 }'`
var1=${awk_variables_value_array[0]}
var2=${awk_variables_value_array[1]}
var3=${awk_variables_value_array[2]}
if[ "var3" -gt "0" ]
--MYSQL SNIPPET IS--
fi
doneRun Code Online (Sandbox Code Playgroud)
问: tail -n2读取最后两行,我该如何更改它,使其成为倒数第二行
文件:
其中n是文件的最后一行
line 1
line 2
line 3
line 4
....
line n-2
line n-1
line nRun Code Online (Sandbox Code Playgroud)
当前输出产量:
line n-1
line n Run Code Online (Sandbox Code Playgroud)
我希望它的输出是:
line n-1Run Code Online (Sandbox Code Playgroud) 将 postfix 更新到 3.0 后,主题中带有 UTF-8 字符的电子邮件卡在队列中,并出现以下错误:
SMTPUTF8 是必需的,但主机 mail.example.com [1.2.3.4] 未提供
接收服务器(此处称为 mail.example.com)是后缀 2.10.1,不支持 SMTPUTF8
我如何获得 postfix 来发送这些电子邮件?我可以更改 postfix 中的某些选项,以便像更新前那样发送它吗?
从我目前的选择来看,有趣的似乎是:
compatibility_level = 2
smtputf8_autodetect_classes = sendmail, verify
smtputf8_enable = ${{$compatibility_level} < {1} ? {no} : {yes}}
strict_smtputf8 = no
Run Code Online (Sandbox Code Playgroud)
我认为所有这些设置都是 3.0 中的默认设置
我有一个名为的文件,myfile.csv其中包含以下内容:
abc:123:myname:1231
def:423324:arbitrary:value:string
StackExchange:Unix:Linux
Run Code Online (Sandbox Code Playgroud)
从我运行的终端 ./myscript.sh def
内容myscript.sh为:
#!/bin/bash
key_word_I_am_looking_for=$1
my_variable=`cat myfile.csv | awk -F: -v keyword="$key_word_I_am_looking_for" '( $1 == keyword )' END{print "$@" }'`
echo "$my_variable"
Run Code Online (Sandbox Code Playgroud)
我希望代码def在myfile.csvieabc或StackExchange. 一旦找到,我希望它在没有分隔符的情况下取出整行并将其放入my_variable变量中,并将其回显到终端(因此输出看起来像:def 423324 arbitrary value string何时./myscript.sh def进入终端。./myscript.sh StackExchange输出时StackExchange Unix Linux) .
我哪里错了?有替代方案吗?