在 OSX 上,我正在构建一个函数来验证日期格式,然后将它们转换为纪元时间。该函数应验证日期是否为以下格式之一,如果不是错误: 01/01/1970 10:00PM或10:00PM(%m/%d/%Y %I:%M%p或%I:%M%p)
功能
checkTIME () {
local CONVERT_CHK_TIME="$1"
if [[ "$CONVERT_CHK_TIME" =~ ^(0[0-9]|1[0-2]):[0-9][0-9](AM|PM)$ ]]; then
CONVERT_TIME="$(date -j -f "%I:%M%p" "$CONVERT_CHK_TIME" "+%s")"
elif [[ "$CONVERT_CHK_TIME" =~ (0[0-9]|1[0-2])\/([0-2][0-9]|3[0-1])\/\d{4}\s[0-9][0-9]:[0-9][0-9](AM|PM) ]]; then
CONVERT_TIME="$(date -j -f "%m/%d/%Y %I:%M%p" "$CONVERT_CHK_TIME" "+%s")"
else
echo "ERROR!"
exit 1
fi
}
Run Code Online (Sandbox Code Playgroud)
它目前工作正常,10:00PM但在我尝试时无法匹配01/10/2017 10:00PM
我这样称呼它:
./convert '01/10/2017 10:00PM'
...
...
+ [[ -n 01/10/2017 10:00PM ]]
+ checkTIME '01/10/2017 10:00PM'
+ local 'CONVERT_CHK_TIME=01/10/2017 10:00PM'
+ [[ …Run Code Online (Sandbox Code Playgroud) 我的电脑上安装了 2 个硬盘。其中一个是空的(我刚刚添加了它),另一个包含其他所有内容。
fdisk 的输出:
root@*****:~# sudo fdisk -l
Disk /dev/sda: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: *****
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 209715166 209713119 100G 83 Linux
Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 …Run Code Online (Sandbox Code Playgroud) 我在 shell 中编写了一个简单的函数,它根据某些条件返回 0 或 1。让我称该函数名称为 foo
foo(){
...
...
}
Run Code Online (Sandbox Code Playgroud)
现在我试图在 if 条件下调用 foo 如下:-
if ( foo $1 )
...
..
Run Code Online (Sandbox Code Playgroud)
它工作正常。但是当我使用跟随方法调用时,我得到错误
if [ foo $1 ]
...
...
Run Code Online (Sandbox Code Playgroud)
为什么它会以“一元运算符预期”的形式抛出错误?
我在终端中得到一些标准输出并尝试使用箭头键向上滚动,但它给了我以前的命令。
向上翻页和向下翻页什么都不做。
使用滚动条极其困难,因为它每微英寸移动一页。请告诉我有一种方法可以在 Ubuntu 终端上使用箭头键(或类似的东西)进行合理的滚动?
我在滚动首选项中看不到任何内容。
我有一个命令可以输出有关块中所有 DIMM 插槽的信息,如下所示:
ID SIZE TYPE
44 105 SMB_TYPE_MEMDEVICE (type 17) (memory device)
Manufacturer: NO DIMM
Serial Number: NO DIMM
Asset Tag: NO DIMM
Location Tag: P1-DIMMD1
Part Number: NO DIMM
Physical Memory Array: 43
Memory Error Data: Not Supported
Total Width: 0 bits
Data Width: 0 bits
Size: Not Populated
Form Factor: 9 (DIMM)
Set: None
Rank: Unknown
Memory Type: 2 (unknown)
Flags: 0x4
SMB_MDF_UNKNOWN (unknown)
Speed: Unknown
Configured Speed: Unknown
Device Locator: P1-DIMMD1
Bank Locator: P0_Node1_Channel0_Dimm0
Minimum Voltage: …Run Code Online (Sandbox Code Playgroud) 我想从分隔符为逗号的数据文件中提取“”之间的数据。
输入文件示例:
,7/30/2019,7/31/2019,Wed,8/1/2019,FH/FN 30yr & 20yr TBA & Spec ,"10,000",8/13/2019,
Run Code Online (Sandbox Code Playgroud)
预期产量:
,7/30/2019,7/31/2019,Wed,8/1/2019,FH/FN 30yr & 20yr TBA & Spec ,"10000",8/13/2019,
Run Code Online (Sandbox Code Playgroud) 我试图阻止用户在不从机器上物理移除闪存卡的情况下关闭或重新启动。为此,我编写了一个 SystemD 服务,removeflash.service:
[Unit]
Description=Prompt user to remove flash card
[Service]
ExecStop=/usr/lib/systemd/flashshutdown.sh
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Requires=rsyslog.service
Run Code Online (Sandbox Code Playgroud)
flashshutdown.sh是一个bash脚本,如下:
#! /bin/bash
#
while [ -e /dev/flash ] ; do
echo "Please remove flash card"
logger "GHB: Please remove flash card"
sleep 5
done
Run Code Online (Sandbox Code Playgroud)
我没想到 echo 在关闭时会做任何事情,而且它没有。但是,我希望 logger 命令能够工作。没有Requires=rsyslog.service,我的服务在rsyslog.service关闭后就退出了;我插入了防止这种情况发生的要求,但唯一的区别是,removeflash.service 的关闭在关闭顺序中较早。幸运的是,systemd 本身向控制台输出一条消息,表明它正在运行提示用户删除闪存卡的作业,这一事实挽救了该服务的目的。
向控制台发出消息的正确方法是什么?
我正在尝试使用 system() 在 awk 中执行 grep ,根据手册应该返回正在运行的命令的退出代码。
$ cat foo.txt
bar
$ grep -q bar foo.txt; echo $?
0
$ awk 'BEGIN{ if ( system( "grep -q bar foo.txt" ) ) { print "yes" } else { print "no" } }'
no
Run Code Online (Sandbox Code Playgroud)
如果我删除-q我可以看到 grep 确实找到了bar所以它应该退出 0 并因此打印是,否?
$ awk 'BEGIN{ if ( system( "grep bar foo.txt" ) ) { print "yes" } else { print "no" } }'
bar
no
Run Code Online (Sandbox Code Playgroud)
grep从等式中完全去除:
$ awk 'BEGIN{ if …Run Code Online (Sandbox Code Playgroud) 我有 smartos 机器将自定义应用程序作为 smf 服务(一个 circonus 监控代理)运行。在其中一些机器上,代理在启动时出错并卡在重启循环中,最终导致机器崩溃。对于我使用过的所有其他 smf 服务,它们将在重新启动几次后进入“维护”模式,但此特定服务似乎从未如此。我在 smf 清单中看不到任何调整这些设置的方法,我在 oracle 文档中也没有找到太多关于它的信息。有谁知道这是否是可配置的设置,如果是,我在哪里可以找到它?
SMF 清单定义了以下重启方法:
<exec_method name='restart' type='method' exec=':kill -HUP' timeout_seconds='10'/>
Run Code Online (Sandbox Code Playgroud) 我正在构建一个函数,该函数将计算给定安培数、距离(以英尺为单位)和允许电压降所需的电线规格。
给定这些值,我可以计算出“圆形密耳”,从而得到AWG 要求。我开始构建一个大型if elif声明来将圆形密耳与其受人尊敬的仪表进行比较,但我相信这case是正确的工具。
我还没有找到任何用于比较数字的案例示例,所以我想知道是否可以执行以下操作:
what.gauge () {
let cmils=11*2*$1*$2/$3
let amils=17*2*$1*$2/$3
case $cmils in
320-403)
cawg="25 AWG"
;;
404-509)
cawg="24 AWG"
;;
510-641)
cawg="23 AWG"
;;
etc...
}
Run Code Online (Sandbox Code Playgroud)