Hi Anatoly, On Sat, Aug 25, 2018 at 12:36:54PM +0300, Anatoly Pugachev wrote:
Hello! virt-what$ git desc v1.18-6-gd7fd8a7 Latest commit in git "Allow using sysctl, for example when /proc isn't available" doesn't look good for me. Can someone please review/revert this commit or explain me what does this code do (git show -1):
What this is meant to achieve, is that use_sysctl would return true (a 0 exit code) if the OS is OpenBSD. Might be clearer if it added a line like 'return $?' after the [..], but it is unnecessary.
+use_sysctl() { + # Lacking /proc, on some systems sysctl can be used instead. + OS=$(uname) || fail "failed to get operating system name" + + [ "$OS" == "OpenBSD" ] +} Running on a linux: virt-what# PATH=$PATH:. ./virt-what ./virt-what: 45: [: Linux: unexpected operator
The test operator should be seeing something like: [ "Linux" == "OpenBSD" ] but the error you're seeing looks more like what happens if a shell interprets it differently - or at least is getting something else, like the following: [ somethingelse Linux == "OpenBSD" ] which will give an error like you're seeing above in some shells (not all), where it is interpreting the 'Linux' as an operator, and is similar to: /bin/test somethingelse Linux == "OpenBSD" where the shell doesn't have an internal implementation of '[', like some older bourne shell versions. But, even if uname outputs more than one word, it should be contained by the quotes in "$OS" in the test code above - on whatever shell you're using that doesn't appear to be the case. You might get more of an idea of what is happening by running the shellscript with the -x option, e.g. virt-what# PATH=$PATH:. /bin/sh -x ./virt-what Thanks, Darren. _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list