我想在if语句中测试一个bash函数返回值,如下所示:
if [[ func arg ]] ; then …
Run Code Online (Sandbox Code Playgroud)
但我收到错误消息,如:条件二进制运算符预期.
这样做的正确方法是什么?
是吗:
if [[ $(func arg) ]] ; then ...
Run Code Online (Sandbox Code Playgroud) 我开始Zed Shaw的学习C艰难的方式.我已经下载了XCode和命令行工具.但是当我编译第一个程序时:
int main(int argc, char *argv[]) {
puts("Hello world.");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我收到这个警告:
ex1.c:2:1:警告:C99中函数'puts'的隐式声明无效[-Wimplicit-function-declaration]
该程序可以正确编译和执行.
我正在使用OSX 10.8.3.输入'gcc -v'给出:
使用内置规格.目标:i686-apple-darwin11配置:/private/var/tmp/llvmgcc42/llvmgcc42-2336.11~182/src/configure --disable-checking --enable-werror --prefix =/Applications/Xcode.app/Contents /Developer/usr/llvm-gcc-4.2 --mandir =/share/man --enable-languages = c,objc,c ++,obj-c ++ --program-prefix = llvm- --program-transform-name =/^ [cg] [^ .-]*$/s/$/ - 4.2/--with-slibdir =/usr/lib --build = i686-apple-darwin11 --enable-llvm =/private/var/tmp /llvmgcc42/llvmgcc42-2336.11~182/dst-llvmCore/Developer/usr/local --program-prefix = i686-apple-darwin11- --host = x86_64-apple-darwin11 --target = i686-apple-darwin11 - with-gxx-include-dir =/usr/include/c ++/4.2.1线程模型:posix gcc版本4.2.1(基于Apple Inc. build 5658)(LLVM build 2336.11.00)
请帮忙.
在交互式bash终端中,如何输入制表符?例如,如果我想使用sed将"_"替换为我想使用的标签:
echo $string | sed 's/[_]/TAB/g'
Run Code Online (Sandbox Code Playgroud)
其中TAB表示Tab键.这不是交互式的shell脚本,当我按Tab键时,我没有任何字符和铮铮声.我也尝试了,\t但它只将t放在字符串而不是标签中.
注意这是mac osx.
我有一个索引的bash数组,我想使用像"$ {a [@]}"这样的表达式,除非我希望它不包含[0].我能想到的最好的是:
j=0
for i in "${a[@]}"
do
b[j]=${a[++j]}
done
Run Code Online (Sandbox Code Playgroud)
然后使用"$ {b [@]}".有没有更好的办法?
我注意到这个网站上有几个帖子说用gnu sed你应该使用(和)正则表达式而不是\(和\).但后来我查看了gnu sed手册,看到他们指定了这个\(并且\)必须使用.这是怎么回事?
我正在通过阅读K&R并进行练习来学习c.我现在在第5章处理指针.我不明白为什么声明:
int *p;
Run Code Online (Sandbox Code Playgroud)
不是:
long int *p;
Run Code Online (Sandbox Code Playgroud)
因为*p包含一个地址,并且不能保证int类型的变量足够大以容纳一个大地址.还是有吗?
我想检查一下代码。我已经搜索了我的 Mac、Stack Overflow 和互联网,但我找不到答案。也许他们不会将此代码放在 Mac 上。谁能让我直截了当?
当我打印一个%c格式的字符并且字符不像"\ 0"那样无法打印时,就没有打印输出列.如果我使用%1c则相同.或%1.1c.有没有办法强制printf输出'\ 0'的列?
我正在做一些大型的printf,我希望列匹配.
编辑:我已经解决了几个被指出的事情,但真正的问题仍然没有解决.
这个bash脚本:
set -vx
/usr/bin/llvm-gcc-4.2 -ansi -g -o mytest mytest.c
ls -l mytest
./mytest
file mytest
Run Code Online (Sandbox Code Playgroud)
产生这个输出:
/usr/bin/llvm-gcc-4.2 -ansi -g -o mytest mytest.c
++ /usr/bin/llvm-gcc-4.2 -ansi -g -o mytest mytest.c
ls -l mytest
++ ls -l mytest
-rwxr-xr-x 1 jimslager wheel 37496 May 27 17:26 mytest
./mytest
++ ./mytest
error: unknown command ./mytest
file mytest
++ file mytest
mytest: Mach-O 64-bit executable x86_64
Run Code Online (Sandbox Code Playgroud)
我已经从我已经使用了几个月的更大的东西中提取了这个,但从未见过像这样的结果.gcc如何生成没有错误或警告的对象,但对象未知?
我会发布test.c如果有人问,但它很长,我的问题在我看来是独立于test.c中的内容.
编辑:这是代码.对不起,这么久了.
/* Test Exercise 5-10: Write the program myexpr, which evaluates a reverse Polish expression …Run Code Online (Sandbox Code Playgroud) 我正在尝试在MacVim中定义自己的命令,将ac语句或语句范围转换为注释.所以我把它放在我的vimrc中:
command -range Com :<line1>,<line2>s?^.*$?/*&*/?
Run Code Online (Sandbox Code Playgroud)
如果我只输入:Com来评论当前行,它工作正常.但是,如果我输入类似于:Com 3 5以便将第3行到第5行转换为注释,我总会收到以下错误消息:
E488: Trailing characters
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
这是bash 3.2.为什么
ls "~/Music/iTunes/iTunes Media/Audiobooks"
Run Code Online (Sandbox Code Playgroud)
失败?
引号是否应该允许嵌入空间?
编辑:它失败并显示以下错误消息:
ls:〜/音乐/ iTunes/iTunes媒体/有声读物:没有这样的文件或目录