我有一个变量,其值是使用 sql 查询找到的。
我想从该变量中删除新行字符,因为我想将此变量与另一个连接起来。下面是代码:
dt=`sqlplus -s user/pwd@servicename <<EOF
set feedback off;
set head off;
select replace(to_char((sysdate-7),'YYYYMonDD')||'_'||to_char((sysdate-1),'YYYYMonDD'),chr(10), '') from dual;
exit;
EOF`
echo "test $dt"
Run Code Online (Sandbox Code Playgroud) 一种。 { echo "Hello World"; } >outputfile
B. ( echo "Hello World" ) >outputfile
C。 ./anothershell.sh
D. /bin/echo "Hello World"
哪个是对的?以及什么样的命令可以在当前shell的同一个进程中运行?
考虑简化文件
AAA
BBB
CCC1
DDD
EEE
CCC2
DDD
FFF
GGG
CCC3
HHH
Run Code Online (Sandbox Code Playgroud)
我可以挑选出的范围内EEE,以FFF与
sed -n '/EEE/,/FFF/p'
Run Code Online (Sandbox Code Playgroud)
假设我想打印任何包含C但仅在匹配范围内的行。我可以sed通过管道传输结果grep
sed -n '/EEE/,/FFF/p' | grep 'C'
Run Code Online (Sandbox Code Playgroud)
我也可以做一个小范围和匹配awk脚本(或perl,python等等)。但是我将如何仅使用一次调用来做到这一点sed?
我有一个问题,我需要用 shell 脚本编写程序,所以我打开了一本关于 linux 的书,其中有一章是关于 bash 脚本的。编写一个测试脚本来测试我遇到的命令似乎是个好主意,但第一个脚本不起作用,并且以其他明显的方式更改它并不能解决问题。
示例中显示的脚本是:-
#!/bin/bash
count=10
nextcount=$count + 1
echo $count
echo $nextcount
Run Code Online (Sandbox Code Playgroud)
运行这个脚本的结果应该是什么
[Carl@localhost bin]$ testscript
10
11
Run Code Online (Sandbox Code Playgroud)
然而实际结果是
[Carl@localhost bin]$ testscript
/home/Carl/bin/testscript: line 3: +: command not found
10
Run Code Online (Sandbox Code Playgroud)
错误消息表明“+”号被解释为命令而不是加法运算符。
如果我删除“+”号周围的空格,使脚本变成
#!/bin/bash
count=10
nextcount=$count+1
echo $count
echo $nextcount
[Carl@localhost bin]$ testscript
10
10+1
Run Code Online (Sandbox Code Playgroud)
第 3 行语句而不是将 1 加 10 得到 11 连接“10”、“+”和“1”
更改 line3 以读取nextcount=$count +1或nextcount=$count+ 1也不起作用。
在脚本编写教科书的第一个示例中发现无法解决的问题不应该发生。我要疯了吗?
如何在目录中多个文件的文件扩展名之前添加当前日期?
原始文件:
Expenses.log
Allowances.log
Run Code Online (Sandbox Code Playgroud)
输出:
Expenses_20170624.log
Allowances_20170624.log
Run Code Online (Sandbox Code Playgroud)
此命令在文件扩展名后附加日期。:(
for file in *; do mv "$file" "${file}_$(date +"%d%m%Y")"; done
Run Code Online (Sandbox Code Playgroud)