在我的程序中,我试图从函数返回一个值,返回值是字符串.一切正常(至少某些部分),如果我在返回后回显值,但它甚至没有调用函数,如果我不返回....考虑下面的代码....
#!/bin/bash
function get_last_name() {
echo "Get Last Name"
ipath=$1
IFS='/'
set $ipath
for item
do
last=$item
done
echo $last
}
main() {
path='/var/lib/iscsi/ifaces/iface0'
current=$(get_last_name "$path")
echo -n "Current="
echo $current
}
main
Run Code Online (Sandbox Code Playgroud)
它给了我这样的输出
OUTPUT
Current=Get Last Name iface0
Run Code Online (Sandbox Code Playgroud)
如果我评论echo $ current,那么我甚至没有看到"Get Last Name",它得出结论,它甚至没有调用函数.请让我知道我犯了什么错误.但有一点我肯定,bash是我见过的最丑的语言.......
两个问题1)当抛出一个Object /变量时会发生什么?比如说,
int foo() {
FILE *fp = ....;
int dummy = 10;
int *dummy_ptr = new int[10];
throw 1;
}
int main() {
try {
foo();
} catch (int &i) {
std::cout<<"ERROR, the value is "<<i<<std::endl;
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,这里会发生什么?创建一个新变量然后传递???
如果我使用指针或没有引用的变量该怎么办
喜欢catch(int*i)//或catch(int i)
此外,在范围内声明或启动的所有变量/资源是否已被释放/关闭?
2)同样在重新抛出的情况下,如果我计划用引用重新抛出,则第二个catch获取一个新变量,如果我在没有引用(即)值的情况下重新抛出,那么在中间抛出中完成的更改不会受到影响....
int goo() {
throw 2;
}
int foo() {
try{
goo();
} catch(int &i) { // (or) catch(int i) // i is not changing in the next line.
i = 2;
throw;
}
}
int …Run Code Online (Sandbox Code Playgroud) 将 size_t 转换为 long 有什么缺点吗?因为,我正在编写一个在文件中维护 links_list 的程序。因此,我基于 size_t 遍历到另一个节点,并且还将列表总数记录为 size_t。因此,显然会有一些转换或添加 long 和 size_t。这有什么缺点吗?如果有的话,我会把所有东西都做的一样长,而不是 size_t,甚至是尺寸。请指教。
我正在用bash编写一个xml元素.我需要将一些以数字开头的字符串替换为以字符开头的字符串,因此它是一个有效的XML标记(请记住xml标记不能以字母数字字符开头).
例如,
str = 192.16.76.52,1001
Run Code Online (Sandbox Code Playgroud)
这不是一个有效的xml标签,即我做不到
<192.16.76.52,1001>
.....
</192.16.76.52,1001>
Run Code Online (Sandbox Code Playgroud)
所以,我打算检测它是否是一个数字,并用类似的东西替换它
IP192.16.76.52
Run Code Online (Sandbox Code Playgroud)
我知道我可以用IFS来做,但可能需要很长时间和额外的代码.
由于您了解主要问题,请随时发表评论或提供建议.
谢谢