我意识到这可能是一个非常简单的问题,但我无法弄清楚为什么这不起作用.我正在尝试检查文件夹是否大于35GB,如果是,请删除所有超过3天的文件.
使用此代码:
#!/bin/bash
MAX=35000000000
if [ $(du -sb ~/MEGA | cut -f1) \> $MAX ] then
find ~/MEGA/* -mtime +3 -exec rm -fr {} \;
fi
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
syntax error near unexpected token `fi'
Run Code Online (Sandbox Code Playgroud) 我正在使用Ubuntu。命令blkid
或blk /dev/sda2
LPIC-1 模块 104.3(安装和卸载)中。但这些命令没有向我显示预期的结果。blkid已安装,我也可以看到man blkid
!
你能指导我解决这个问题吗?
我想阅读一个文件,awk
但我被困在第四个字段,它会在逗号后自动断开.
数据: - test.txt
"A","B","ls","This,is,the,test"
"k","O","mv","This,is,the,2nd test"
"C","J","cd","This,is,the,3rd test"
cat test.txt | awk -F , '{ OFS="|" ;print $2 $3 $4 }'
Run Code Online (Sandbox Code Playgroud)
产量
"B"|"ls"|"This
"O"|"mv"|"This
"J"|"cd"|"This
Run Code Online (Sandbox Code Playgroud)
但输出应该是这样的
"B"|"ls"|"This,is,the,test"
"O"|"mv"|"This,is,the,2nd test"
"J"|"cd"|"This,is,the,3rd test"
Run Code Online (Sandbox Code Playgroud)
任何的想法
我的脚本中有以下行:
xrandr --newmode "$xx$y" $m
Run Code Online (Sandbox Code Playgroud)
where $x
和$y
是整数,产生类似的输出1024x768
.
不幸的是我的脚本正在解释$x
as $xx
- 如何阻止它并获得所需的行为?
我将所有退出代码替换为bash脚本的行号.
样本文件:
echo something
if conditional;then exit 1;fi
echo something else
if conditional;then exit 2;fi
Run Code Online (Sandbox Code Playgroud)
样本输出:
echo something
if conditional;then exit 2;fi
echo something else
if conditional;then exit 4;fi
Run Code Online (Sandbox Code Playgroud)
目前我这样做:
cat -n file |sed "s/\([[:blank:]]*[0-9]\+\)\(.*\)\(exit[[:blank:]]*\)\([0-9]\+\)\(.*\)/\1\2\3\1\5/" | sed "s/[[:blank:]]*[0-9]\+[[:blank:]]//"
Run Code Online (Sandbox Code Playgroud)
这项工作起作用但对于简单的任务来说似乎过于复杂.
有什么建议我怎么能有效地做到这一点?
我正在尝试学习如何使用指针正常运行.我应该在函数strcmp
内部创建一个指向函数的指针check
,但程序会立即打开和关闭.据我所知,函数指针在我的代码上是正确的 returnType (*pointer)(parameters));
那么出了什么问题?提前致谢.
void check(char *a,char *b,int (*cmp)(const char*,const char*))
{
printf("Testing equality\n");
if(!(*cmp)(a,b)) printf("equals");
else printf("different");
}
int main(void)
{
char s1[80] = "daniel" ,s2[80] = "daniel";
int (*p)(const char*,const char*);
p = strcmp();
check(s1,s2,p);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我最近发现的信息是,在5月15日02:09:25,Unix时间将等于1010101010101010101010101010101
二进制表示.
我想知道它是否是假的,所以我试图用二进制来获得当前的Unix时间.我想出了一个像这样的简单提示:
$ date +%s | xxd -b
Run Code Online (Sandbox Code Playgroud)
我得到了这样的结果:
0000000: 00110001 00110100 00110011 00110001 00110100 00110110 143146
0000006: 00110010 00110100 00110100 00110010 00001010 2442.
Run Code Online (Sandbox Code Playgroud)
总而言之,我得到了:
0011000100110100001100110011000100110100001101100011001000110100001101000011001000001010
Run Code Online (Sandbox Code Playgroud)
但它显示了我预期的更多数字.所有其他变化也不令人满意,例如$ date "+%v %H:%M:%S" | xxd -b
或$ date | xxd -b
.
我想,这对date
和xxd
命令不会给我预期的结果.
你能告诉我怎样才能得到1010101010101010101010101010101
5月15日02:09:25 得到的二进制表示的当前时间?
好的,所以使用这个在线转换器(http://www.mathsisfun.com/binary-decimal-hexadecimal-converter.html)我能够得到一个合理的位数.如何使用bash实现同样的目标?
这就是我想要做的:
class A{
public:
A(){/*need to initialize something here*/}
};
int main(){
A a; //OK
a=A(); //not OK
a=A(b); //not OK
///Only A a; needs to be allowed.
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我需要初始化一些东西,同时防止使用复制构造函数初始化对象,并且还要阻止分配给现有对象.
注意:如果我能在没有的情况下做到这一点会很好>=C++11
.
在bash脚本中,我需要检查字符串是否$HEADER
以字符序列“ / *”开头。我正在尝试:
if [ $(echo $HEADER | cut -c 1-2) = '/*' ]
Run Code Online (Sandbox Code Playgroud)
它没有按预期工作。似乎将字符串与根目录的文件列表进行了比较。
如何保护从外壳解释的字符/和*?
用反斜杠保护字符也不起作用。
我找到了这个问题的答案......只是想为其他人提供一些信息,他们也遇到了这个问题......
在我的系统中,我遇到了这个问题,因为我使用了sh main.sh
处理我的shell脚本而忽略了"Bash"和"Shell"之间的区别.
为了解决此问题,您可以尝试通过使用chmod +x
和使用./
来执行程序将模式更改为可执行文件.
祝好运!