我需要能够在完全随机的时间内每天运行20次PHP脚本.我也希望它只在上午9点到晚上11点之间运行.
我熟悉在linux中创建cron作业.
以下是一系列echo $var可以显示与刚刚分配的值不同的值的情况.无论指定的值是"双引号","单引号"还是不引用,都会发生这种情况.
如何让shell正确设置我的变量?
星号
预期的输出是/* Foobar is free software */,但我得到一个文件名列表:
$ var="/* Foobar is free software */"
$ echo $var
/bin /boot /dev /etc /home /initrd.img /lib /lib64 /media /mnt /opt /proc ...
Run Code Online (Sandbox Code Playgroud)
方括号
期望值是[a-z],但有时我会得到一个字母!
$ var=[a-z]
$ echo $var
c
Run Code Online (Sandbox Code Playgroud)
换行(换行符)
预期值是一个单独的行列表,但所有值都在一行!
$ cat file
foo
bar
baz
$ var=$(cat file)
$ echo $var
foo bar baz
Run Code Online (Sandbox Code Playgroud)
多个空间
我期望一个精心对齐的表头,但是多个空格要么消失要么折叠成一个!
$ var=" title | count"
$ echo $var
title | count
Run Code Online (Sandbox Code Playgroud)
标签
我期望两个制表符分隔值,但我得到两个空格分隔值!
$ …Run Code Online (Sandbox Code Playgroud) 我试图从文本文件中获取特定的行.
到目前为止,在线我只看过像sed这样的东西(我只能使用sh -not bash或sed或类似的东西).我只需要使用基本的shell脚本来完成这项工作.
cat file | while read line
do
#do something
done
Run Code Online (Sandbox Code Playgroud)
我知道如何遍历行,如上所示,但如果我只需要获取特定行的内容该怎么办
我想使用cat <<EOF >>以下代码将代码打印到文件中:
cat <<EOF >> brightup.sh
!/bin/bash
curr=`cat /sys/class/backlight/intel_backlight/actual_brightness`
if [ $curr -lt 4477 ]; then
curr=$((curr+406));
echo $curr > /sys/class/backlight/intel_backlight/brightness;
fi
EOF
Run Code Online (Sandbox Code Playgroud)
但是当我检查文件输出时,我得到了这个:
!/bin/bash
curr=1634
if [ -lt 4477 ]; then
curr=406;
echo > /sys/class/backlight/intel_backlight/brightness;
fi
Run Code Online (Sandbox Code Playgroud)
我尝试使用单引号,但输出也带有单引号.我该如何避免这个问题?
问题出在标题中.以感叹号开头的shell命令(shell脚本的一部分)的目的是什么?具体例子:
在foo.sh中:
#!/usr/bin/env bash
set -e
! docker stop foo
! docker rm -f foo
# ... other stuff
Run Code Online (Sandbox Code Playgroud)
我知道如果没有空格,感叹号将用于历史记录替换,并且! <expression>根据手册页可用于评估" 如果expr为false则为True ".但是在对我来说没有意义的示例上下文中.
所以我没有经验处理过多的文件类型,而且我还没有找到关于究竟是什么.sh文件的很多信息.这是我正在尝试做的事情:
我正在尝试下载以可以单独下载的磁贴排列的地图数据集:http://daymet.ornl.gov/gridded
为了一次下载一系列的瓷砖,他们说下载他们的脚本,最终导致daymet-nc-retrieval.sh:https://github.com/daymet/scripts/blob/master/Bash/daymet-nc-retrieval.sh
那么,我应该用这段代码做什么呢?假设用户知道如何处理,网站不提供进一步的说明.我猜你应该将代码粘贴到浏览器的其他未提及的应用程序中(在这种情况下使用Chrome或Firefox)?它看起来几乎可以粘贴到Firefox/Greasemonkey中,但并不完全.只是通过一个快速谷歌的文件类型我无法得到它的正面或反面.
我确信有一个关于如何处理这些文件的简单解释,但它似乎埋藏在很多帖子中,人们已经假设你知道如何处理这些文件.有人愿意只是简单地说明在使用实际实现代码的页面之后需要从正方形做什么?谢谢.
我想递归的目录遍历和更改特定扩展名的所有文件的扩展名,说.t1来.t2.执行此操作的bash命令是什么?
我正在寻找将文件从一个目录合并到另一个目录的shell脚本.
样品:
html/
a/
b.html
index.html
html_new/
a/
b2.html
b.html
Run Code Online (Sandbox Code Playgroud)
用法:
./mergedirs.sh html html_new
Run Code Online (Sandbox Code Playgroud)
结果:
html/
a/
b.html
b2.html
index.html
Run Code Online (Sandbox Code Playgroud)
html/a/b.html被html_new/a/b.html
html/a/b2.html复制的被取而代之的是html_new/a/b2.html
html/index.html被保持不变的
set -o pipefailshell脚本开头的是什么意思?